mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 16:25:16 +03:00
[Companion] Show custom channel, G-Var, and Curve names throughout UI. (#4874)
* [Companion] Move RadioData constructor. * [Companion] Move getCapability(SwitchPositions) to Boards class. * [Companion] Show custom channel, g-var, & curve names throughout UI; Remove redundant name formatting and other unused functions in ModelPrinter and Helpers; Add CustomFunctionData::isEmpty(). * [Companion] Add LogicalSwitchData::isEmpty(). * [Companion] Fix small bug in HardwarePanel. * [Companion] Rename logical switches to "LSw##" in selections lists to avoid confusion with "L#" and "LS" hardware controls; remove unused RotaryEncoderString().
This commit is contained in:
parent
04bcc70422
commit
72b1ad085f
19 changed files with 180 additions and 199 deletions
|
@ -211,6 +211,11 @@ const int Boards::getCapability(Board::Type board, Board::Capability capability)
|
||||||
return 8;
|
return 8;
|
||||||
else
|
else
|
||||||
return 7;
|
return 7;
|
||||||
|
case SwitchPositions:
|
||||||
|
if (IS_HORUS_OR_TARANIS(board))
|
||||||
|
return getCapability(board, Switches) * 3;
|
||||||
|
else
|
||||||
|
return 9;
|
||||||
case NumTrims:
|
case NumTrims:
|
||||||
if (IS_HORUS(board))
|
if (IS_HORUS(board))
|
||||||
return 6;
|
return 6;
|
||||||
|
|
|
@ -111,6 +111,7 @@ namespace Board {
|
||||||
Sliders,
|
Sliders,
|
||||||
MouseAnalogs,
|
MouseAnalogs,
|
||||||
Switches,
|
Switches,
|
||||||
|
SwitchPositions,
|
||||||
FactoryInstalledSwitches,
|
FactoryInstalledSwitches,
|
||||||
NumTrims,
|
NumTrims,
|
||||||
NumTrimSwitches
|
NumTrimSwitches
|
||||||
|
|
|
@ -134,27 +134,6 @@ int TimToVal(float value)
|
||||||
return (temp-129);
|
return (temp-129);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString getSignedStr(int value)
|
|
||||||
{
|
|
||||||
return value > 0 ? QString("+%1").arg(value) : QString("%1").arg(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString getGVarString(int16_t val, bool sign)
|
|
||||||
{
|
|
||||||
if (val >= -10000 && val <= 10000) {
|
|
||||||
if (sign)
|
|
||||||
return QString("%1%").arg(getSignedStr(val));
|
|
||||||
else
|
|
||||||
return QString("%1%").arg(val);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (val<0)
|
|
||||||
return QObject::tr("-GV%1").arg(-val-10000);
|
|
||||||
else
|
|
||||||
return QObject::tr("GV%1").arg(val-10000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SensorData::updateUnit()
|
void SensorData::updateUnit()
|
||||||
{
|
{
|
||||||
if (type == TELEM_TYPE_CALCULATED) {
|
if (type == TELEM_TYPE_CALCULATED) {
|
||||||
|
@ -494,17 +473,6 @@ RawSourceRange RawSource::getRange(const ModelData * model, const GeneralSetting
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString RotaryEncoderString(int index)
|
|
||||||
{
|
|
||||||
static const QString rotary[] = { QObject::tr("REa"), QObject::tr("REb") };
|
|
||||||
return CHECK_IN_ARRAY(rotary, index);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* RawSource
|
|
||||||
*/
|
|
||||||
|
|
||||||
QString RawSource::toString(const ModelData * model, const GeneralSettings * const generalSettings) const
|
QString RawSource::toString(const ModelData * model, const GeneralSettings * const generalSettings) const
|
||||||
{
|
{
|
||||||
static const QString trims[] = {
|
static const QString trims[] = {
|
||||||
|
@ -530,6 +498,8 @@ QString RawSource::toString(const ModelData * model, const GeneralSettings * con
|
||||||
QObject::tr("ACC"), QObject::tr("GPS Time"),
|
QObject::tr("ACC"), QObject::tr("GPS Time"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const QString rotary[] = { QObject::tr("REa"), QObject::tr("REb") };
|
||||||
|
|
||||||
if (index<0) {
|
if (index<0) {
|
||||||
return QObject::tr("----");
|
return QObject::tr("----");
|
||||||
}
|
}
|
||||||
|
@ -539,8 +509,8 @@ QString RawSource::toString(const ModelData * model, const GeneralSettings * con
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SOURCE_TYPE_VIRTUAL_INPUT:
|
case SOURCE_TYPE_VIRTUAL_INPUT:
|
||||||
result = QObject::tr("[I%1]").arg(index+1);
|
result = QObject::tr("[I%1]").arg(index+1);
|
||||||
if (model)
|
if (model && model->inputNames[index][0])
|
||||||
result += QString(model->inputNames[index]);
|
result.append(":" + QString(model->inputNames[index]).trimmed());
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
case SOURCE_TYPE_LUA_OUTPUT:
|
case SOURCE_TYPE_LUA_OUTPUT:
|
||||||
|
@ -562,7 +532,7 @@ QString RawSource::toString(const ModelData * model, const GeneralSettings * con
|
||||||
case SOURCE_TYPE_TRIM:
|
case SOURCE_TYPE_TRIM:
|
||||||
return CHECK_IN_ARRAY(trims, index);
|
return CHECK_IN_ARRAY(trims, index);
|
||||||
case SOURCE_TYPE_ROTARY_ENCODER:
|
case SOURCE_TYPE_ROTARY_ENCODER:
|
||||||
return RotaryEncoderString(index);
|
return CHECK_IN_ARRAY(rotary, index);
|
||||||
case SOURCE_TYPE_MAX:
|
case SOURCE_TYPE_MAX:
|
||||||
return QObject::tr("MAX");
|
return QObject::tr("MAX");
|
||||||
|
|
||||||
|
@ -574,7 +544,7 @@ QString RawSource::toString(const ModelData * model, const GeneralSettings * con
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
case SOURCE_TYPE_CUSTOM_SWITCH:
|
case SOURCE_TYPE_CUSTOM_SWITCH:
|
||||||
return QObject::tr("L%1").arg(index+1);
|
return QObject::tr("LSw%1").arg(index+1, 2, 10, QChar('0'));
|
||||||
|
|
||||||
case SOURCE_TYPE_CYC:
|
case SOURCE_TYPE_CYC:
|
||||||
return QObject::tr("CYC%1").arg(index+1);
|
return QObject::tr("CYC%1").arg(index+1);
|
||||||
|
@ -583,7 +553,10 @@ QString RawSource::toString(const ModelData * model, const GeneralSettings * con
|
||||||
return QObject::tr("TR%1").arg(index+1);
|
return QObject::tr("TR%1").arg(index+1);
|
||||||
|
|
||||||
case SOURCE_TYPE_CH:
|
case SOURCE_TYPE_CH:
|
||||||
return QObject::tr("CH%1").arg(index+1);
|
result = QObject::tr("CH%1").arg(index+1, 2, 10, QChar('0'));
|
||||||
|
if (getCurrentFirmware()->getCapability(ChannelsName) && model && model->limitData[index].name[0])
|
||||||
|
result.append(":" + QString(model->limitData[index].name).trimmed());
|
||||||
|
return result;
|
||||||
|
|
||||||
case SOURCE_TYPE_SPECIAL:
|
case SOURCE_TYPE_SPECIAL:
|
||||||
return CHECK_IN_ARRAY(special, index);
|
return CHECK_IN_ARRAY(special, index);
|
||||||
|
@ -601,7 +574,10 @@ QString RawSource::toString(const ModelData * model, const GeneralSettings * con
|
||||||
}
|
}
|
||||||
|
|
||||||
case SOURCE_TYPE_GVAR:
|
case SOURCE_TYPE_GVAR:
|
||||||
return QObject::tr("GV%1").arg(index+1);
|
result = QObject::tr("GV%1").arg(index+1);
|
||||||
|
if (getCurrentFirmware()->getCapability(GvarsName) && model && model->gvars_names[index][0])
|
||||||
|
result.append(":" + QString(model->gvars_names[index]).trimmed());
|
||||||
|
return result;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return QObject::tr("----");
|
return QObject::tr("----");
|
||||||
|
@ -706,7 +682,7 @@ QString RawSwitch::toString(Board::Type board, const GeneralSettings * const gen
|
||||||
}
|
}
|
||||||
|
|
||||||
case SWITCH_TYPE_VIRTUAL:
|
case SWITCH_TYPE_VIRTUAL:
|
||||||
return QObject::tr("L%1").arg(index);
|
return QObject::tr("LSw%1").arg(index, 2, 10, QChar('0'));
|
||||||
|
|
||||||
case SWITCH_TYPE_MULTIPOS_POT:
|
case SWITCH_TYPE_MULTIPOS_POT:
|
||||||
if (!getCurrentFirmware()->getCapability(MultiposPotsPositions))
|
if (!getCurrentFirmware()->getCapability(MultiposPotsPositions))
|
||||||
|
@ -753,23 +729,48 @@ QString RawSwitch::toString(Board::Type board, const GeneralSettings * const gen
|
||||||
* CurveReference
|
* CurveReference
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QString CurveReference::toString() const
|
QString CurveReference::toString(const ModelData * model, bool verbose) const
|
||||||
{
|
{
|
||||||
if (value == 0) {
|
if (value == 0) {
|
||||||
return "----";
|
return "----";
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
|
QString ret;
|
||||||
|
unsigned idx = abs(value) - 1;
|
||||||
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case CURVE_REF_DIFF:
|
case CURVE_REF_DIFF:
|
||||||
return QObject::tr("Diff(%1)").arg(getGVarString(value));
|
ret = QObject::tr("Diff(%1)").arg(Helpers::getAdjustmentString(value, model));
|
||||||
|
break;
|
||||||
|
|
||||||
case CURVE_REF_EXPO:
|
case CURVE_REF_EXPO:
|
||||||
return QObject::tr("Expo(%1)").arg(getGVarString(value));
|
ret = QObject::tr("Expo(%1)").arg(Helpers::getAdjustmentString(value, model));
|
||||||
|
break;
|
||||||
|
|
||||||
case CURVE_REF_FUNC:
|
case CURVE_REF_FUNC:
|
||||||
return QObject::tr("Function(%1)").arg(QString("x>0" "x<0" "|x|" "f>0" "f<0" "|f|").mid(3*(value-1), 3));
|
ret = QString("x>0" "x<0" "|x|" "f>0" "f<0" "|f|").mid(3*(value-1), 3);
|
||||||
|
if (verbose)
|
||||||
|
ret = QObject::tr("Function(%1)").arg(ret);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return QString(value > 0 ? QObject::tr("Curve(%1)") : QObject::tr("!Curve(%1)")).arg(abs(value));
|
if (model)
|
||||||
|
ret = model->curves[idx].nameToString(idx);
|
||||||
|
else
|
||||||
|
ret = CurveData().nameToString(idx);
|
||||||
|
if (verbose)
|
||||||
|
ret = QObject::tr("Curve(%1)").arg(ret);
|
||||||
|
if (value < 0)
|
||||||
|
ret.prepend(CPN_STR_SW_INDICATOR_REV);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool LogicalSwitchData::isEmpty() const
|
||||||
|
{
|
||||||
|
return (func == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
CSFunctionFamily LogicalSwitchData::getFunctionFamily() const
|
CSFunctionFamily LogicalSwitchData::getFunctionFamily() const
|
||||||
|
@ -856,10 +857,15 @@ void CustomFunctionData::clear()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CustomFunctionData::funcToString() const
|
bool CustomFunctionData::isEmpty() const
|
||||||
|
{
|
||||||
|
return (swtch.type == SWITCH_TYPE_NONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CustomFunctionData::funcToString(const ModelData * model) const
|
||||||
{
|
{
|
||||||
if (func >= FuncOverrideCH1 && func <= FuncOverrideCH32)
|
if (func >= FuncOverrideCH1 && func <= FuncOverrideCH32)
|
||||||
return QObject::tr("Override %1").arg(RawSource(SOURCE_TYPE_CH, func).toString());
|
return QObject::tr("Override %1").arg(RawSource(SOURCE_TYPE_CH, func).toString(model));
|
||||||
else if (func == FuncTrainer)
|
else if (func == FuncTrainer)
|
||||||
return QObject::tr("Trainer");
|
return QObject::tr("Trainer");
|
||||||
else if (func == FuncTrainerRUD)
|
else if (func == FuncTrainerRUD)
|
||||||
|
@ -903,7 +909,7 @@ QString CustomFunctionData::funcToString() const
|
||||||
else if (func == FuncBackgroundMusicPause)
|
else if (func == FuncBackgroundMusicPause)
|
||||||
return QObject::tr("Background Music Pause");
|
return QObject::tr("Background Music Pause");
|
||||||
else if (func >= FuncAdjustGV1 && func <= FuncAdjustGVLast)
|
else if (func >= FuncAdjustGV1 && func <= FuncAdjustGVLast)
|
||||||
return QObject::tr("Adjust GV%1").arg(func-FuncAdjustGV1+1);
|
return QObject::tr("Adjust %1").arg(RawSource(SOURCE_TYPE_GVAR, func-FuncAdjustGV1).toString(model));
|
||||||
else if (func == FuncSetFailsafeInternalModule)
|
else if (func == FuncSetFailsafeInternalModule)
|
||||||
return QObject::tr("SetFailsafe Int. Module");
|
return QObject::tr("SetFailsafe Int. Module");
|
||||||
else if (func == FuncSetFailsafeExternalModule)
|
else if (func == FuncSetFailsafeExternalModule)
|
||||||
|
@ -1078,6 +1084,14 @@ bool CurveData::isEmpty() const
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CurveData::nameToString(const int idx) const
|
||||||
|
{
|
||||||
|
QString ret = QCoreApplication::translate("CurveData", "CV%1").arg(idx+1, 2, 10, QChar('0'));
|
||||||
|
if (name[0])
|
||||||
|
ret.append(":" + QString(name).trimmed());
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
QString LimitData::minToString() const
|
QString LimitData::minToString() const
|
||||||
{
|
{
|
||||||
return QString::number((qreal)min/10);
|
return QString::number((qreal)min/10);
|
||||||
|
@ -1504,11 +1518,6 @@ void ModelData::clearMixes()
|
||||||
mixData[i].clear();
|
mixData[i].clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
RadioData::RadioData()
|
|
||||||
{
|
|
||||||
models.resize(getCurrentFirmware()->getCapability(Models));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModelData::clear()
|
void ModelData::clear()
|
||||||
{
|
{
|
||||||
memset(this, 0, sizeof(ModelData));
|
memset(this, 0, sizeof(ModelData));
|
||||||
|
|
|
@ -30,8 +30,6 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
QString RotaryEncoderString(int index);
|
|
||||||
|
|
||||||
const uint8_t modn12x3[4][4]= {
|
const uint8_t modn12x3[4][4]= {
|
||||||
{1, 2, 3, 4},
|
{1, 2, 3, 4},
|
||||||
{1, 3, 2, 4},
|
{1, 3, 2, 4},
|
||||||
|
@ -52,7 +50,6 @@ enum Capability {
|
||||||
VoicesMaxLength,
|
VoicesMaxLength,
|
||||||
MultiLangVoice,
|
MultiLangVoice,
|
||||||
ModelImage,
|
ModelImage,
|
||||||
SwitchesPositions,
|
|
||||||
CustomFunctions,
|
CustomFunctions,
|
||||||
SafetyChannelCustomFunction,
|
SafetyChannelCustomFunction,
|
||||||
LogicalSwitches,
|
LogicalSwitches,
|
||||||
|
@ -187,9 +184,6 @@ void getEEPROMString(char *dst, const char *src, int size);
|
||||||
float ValToTim(int value);
|
float ValToTim(int value);
|
||||||
int TimToVal(float value);
|
int TimToVal(float value);
|
||||||
|
|
||||||
QString getSignedStr(int value);
|
|
||||||
QString getGVarString(int16_t val, bool sign=false);
|
|
||||||
|
|
||||||
inline int applyStickMode(int stick, unsigned int mode)
|
inline int applyStickMode(int stick, unsigned int mode)
|
||||||
{
|
{
|
||||||
if (mode == 0 || mode > 4) {
|
if (mode == 0 || mode > 4) {
|
||||||
|
|
|
@ -489,11 +489,6 @@ int OpenTxFirmware::getCapability(::Capability capability)
|
||||||
return 0;
|
return 0;
|
||||||
case PermTimers:
|
case PermTimers:
|
||||||
return (IS_2560(board) || IS_ARM(board));
|
return (IS_2560(board) || IS_ARM(board));
|
||||||
case SwitchesPositions:
|
|
||||||
if (IS_HORUS_OR_TARANIS(board))
|
|
||||||
return getBoardCapability(board, Board::Switches) * 3;
|
|
||||||
else
|
|
||||||
return 9;
|
|
||||||
case CustomFunctions:
|
case CustomFunctions:
|
||||||
if (IS_ARM(board))
|
if (IS_ARM(board))
|
||||||
return 64;
|
return 64;
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#include "hardware.h"
|
#include "hardware.h"
|
||||||
#include "ui_hardware.h"
|
#include "ui_hardware.h"
|
||||||
|
|
||||||
void HardwarePanel::setupSwitchType(int index, QLabel * label, AutoLineEdit * name, AutoComboBox * type, bool threePos = true)
|
void HardwarePanel::setupSwitchType(int index, QLabel * label, AutoLineEdit * name, AutoComboBox * type, bool threePos)
|
||||||
{
|
{
|
||||||
Board::Type board = getCurrentBoard();
|
Board::Type board = getCurrentBoard();
|
||||||
if (IS_STM32(board) && index < getBoardCapability(board, Board::Switches)) {
|
if (IS_STM32(board) && index < getBoardCapability(board, Board::Switches)) {
|
||||||
|
|
|
@ -56,7 +56,7 @@ class HardwarePanel : public GeneralPanel
|
||||||
protected:
|
protected:
|
||||||
void setupPotType(int index, QLabel * label, AutoLineEdit * name, AutoComboBox * type);
|
void setupPotType(int index, QLabel * label, AutoLineEdit * name, AutoComboBox * type);
|
||||||
void setupSliderType(int index, QLabel * label, AutoLineEdit * name, AutoComboBox * type);
|
void setupSliderType(int index, QLabel * label, AutoLineEdit * name, AutoComboBox * type);
|
||||||
void setupSwitchType(int index, QLabel * label, AutoLineEdit * name, AutoComboBox * type, bool threePos);
|
void setupSwitchType(int index, QLabel * label, AutoLineEdit * name, AutoComboBox * type, bool threePos = true);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::Hardware *ui;
|
Ui::Hardware *ui;
|
||||||
|
|
|
@ -225,7 +225,7 @@ void CurveGroup::update()
|
||||||
lastType = curve.type;
|
lastType = curve.type;
|
||||||
curveValueCB->clear();
|
curveValueCB->clear();
|
||||||
for (int i=0; i<=6/*TODO constant*/; i++) {
|
for (int i=0; i<=6/*TODO constant*/; i++) {
|
||||||
curveValueCB->addItem(CurveReference(CurveReference::CURVE_REF_FUNC, i).toString());
|
curveValueCB->addItem(CurveReference(CurveReference::CURVE_REF_FUNC, i).toString(&model, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
curveValueCB->setCurrentIndex(curve.value);
|
curveValueCB->setCurrentIndex(curve.value);
|
||||||
|
@ -237,7 +237,7 @@ void CurveGroup::update()
|
||||||
lastType = curve.type;
|
lastType = curve.type;
|
||||||
curveValueCB->clear();
|
curveValueCB->clear();
|
||||||
for (int i= ((flags & HIDE_NEGATIVE_CURVES) ? 0 : -numcurves); i<=numcurves; i++) {
|
for (int i= ((flags & HIDE_NEGATIVE_CURVES) ? 0 : -numcurves); i<=numcurves; i++) {
|
||||||
curveValueCB->addItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, i).toString(), i);
|
curveValueCB->addItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, i).toString(&model, false), i);
|
||||||
if (i == curve.value) {
|
if (i == curve.value) {
|
||||||
curveValueCB->setCurrentIndex(curveValueCB->count() - 1);
|
curveValueCB->setCurrentIndex(curveValueCB->count() - 1);
|
||||||
}
|
}
|
||||||
|
@ -324,38 +324,43 @@ void CurveGroup::valuesChanged()
|
||||||
|
|
||||||
void Helpers::populateGVCB(QComboBox & b, int value, const ModelData & model)
|
void Helpers::populateGVCB(QComboBox & b, int value, const ModelData & model)
|
||||||
{
|
{
|
||||||
bool selected = false;
|
int count = getCurrentFirmware()->getCapability(Gvars);
|
||||||
|
|
||||||
b.clear();
|
b.clear();
|
||||||
|
|
||||||
int count = getCurrentFirmware()->getCapability(Gvars);
|
|
||||||
for (int i=-count; i<=-1; i++) {
|
for (int i=-count; i<=-1; i++) {
|
||||||
int16_t gval = (int16_t)(-10000+i);
|
int16_t gval = (int16_t)(-10000+i);
|
||||||
if (strlen(model.gvars_names[-i-1]) > 0)
|
b.addItem("-" + RawSource(SOURCE_TYPE_GVAR, abs(i)-1).toString(&model), gval);
|
||||||
b.addItem(QObject::tr("-GV%1 (%2)").arg(-i).arg(model.gvars_names[-i-1]), gval);
|
|
||||||
else
|
|
||||||
b.addItem(QObject::tr("-GV%1").arg(-i), gval);
|
|
||||||
if (value == gval) {
|
|
||||||
b.setCurrentIndex(b.count()-1);
|
|
||||||
selected = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=1; i<=count; i++) {
|
for (int i=1; i<=count; i++) {
|
||||||
int16_t gval = (int16_t)(10000+i);
|
int16_t gval = (int16_t)(10000+i);
|
||||||
if (strlen(model.gvars_names[i-1]) > 0)
|
b.addItem(RawSource(SOURCE_TYPE_GVAR, i-1).toString(&model), gval);
|
||||||
b.addItem(QObject::tr("GV%1 (%2)").arg(i).arg(model.gvars_names[i-1]), gval);
|
|
||||||
else
|
|
||||||
b.addItem(QObject::tr("GV%1").arg(i), gval);
|
|
||||||
if (value == gval) {
|
|
||||||
b.setCurrentIndex(b.count()-1);
|
|
||||||
selected = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selected) {
|
b.setCurrentIndex(b.findData(value));
|
||||||
|
if (b.currentIndex() == -1)
|
||||||
b.setCurrentIndex(count);
|
b.setCurrentIndex(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns Diff/Expo/Weight/Offset adjustment value as either a percentage or a global variable name.
|
||||||
|
QString Helpers::getAdjustmentString(int16_t val, const ModelData * model, bool sign)
|
||||||
|
{
|
||||||
|
QString ret;
|
||||||
|
if (val >= -10000 && val <= 10000) {
|
||||||
|
ret = "%1%";
|
||||||
|
if (sign && val > 0)
|
||||||
|
ret.prepend("+");
|
||||||
|
ret = ret.arg(val);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ret = RawSource(SOURCE_TYPE_GVAR, abs(val) - 10001).toString(model);
|
||||||
|
if (val < 0)
|
||||||
|
ret.prepend("-");
|
||||||
|
else if (sign)
|
||||||
|
ret.prepend("+");
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Helpers::populateGvarUseCB(QComboBox * b, unsigned int phase)
|
void Helpers::populateGvarUseCB(QComboBox * b, unsigned int phase)
|
||||||
|
@ -368,29 +373,6 @@ void Helpers::populateGvarUseCB(QComboBox * b, unsigned int phase)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Helpers::populateGvSourceCB(QComboBox * b, int value)
|
|
||||||
{
|
|
||||||
QString strings[] = { QObject::tr("---"), QObject::tr("Rud Trim"), QObject::tr("Ele Trim"), QObject::tr("Thr Trim"), QObject::tr("Ail Trim"), QObject::tr("Rot Enc"), QObject::tr("Rud"), QObject::tr("Ele"), QObject::tr("Thr"), QObject::tr("Ail"), QObject::tr("P1"), QObject::tr("P2"), QObject::tr("P3")};
|
|
||||||
b->clear();
|
|
||||||
for (int i=0; i<= 12; i++) {
|
|
||||||
b->addItem(strings[i]);
|
|
||||||
}
|
|
||||||
b->setCurrentIndex(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Helpers::populatePhasesCB(QComboBox * b, int value)
|
|
||||||
{
|
|
||||||
for (int i=-getCurrentFirmware()->getCapability(FlightModes); i<=getCurrentFirmware()->getCapability(FlightModes); i++) {
|
|
||||||
if (i < 0)
|
|
||||||
b->addItem(QObject::tr("!Flight mode %1").arg(-i-1), i);
|
|
||||||
else if (i > 0)
|
|
||||||
b->addItem(QObject::tr("Flight mode %1").arg(i-1), i);
|
|
||||||
else
|
|
||||||
b->addItem(QObject::tr("----"), 0);
|
|
||||||
}
|
|
||||||
b->setCurrentIndex(value + getCurrentFirmware()->getCapability(FlightModes));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Helpers::populateFileComboBox(QComboBox * b, const QSet<QString> & set, const QString & current)
|
void Helpers::populateFileComboBox(QComboBox * b, const QSet<QString> & set, const QString & current)
|
||||||
{
|
{
|
||||||
b->clear();
|
b->clear();
|
||||||
|
@ -456,21 +438,22 @@ void Helpers::addRawSwitchItems(QStandardItemModel * itemModel, const RawSwitchT
|
||||||
QStandardItemModel * Helpers::getRawSwitchItemModel(const GeneralSettings * const generalSettings, SwitchContext context)
|
QStandardItemModel * Helpers::getRawSwitchItemModel(const GeneralSettings * const generalSettings, SwitchContext context)
|
||||||
{
|
{
|
||||||
QStandardItemModel * itemModel = new QStandardItemModel();
|
QStandardItemModel * itemModel = new QStandardItemModel();
|
||||||
Board::Type board = getCurrentBoard();
|
Boards board = Boards(getCurrentBoard());
|
||||||
|
Board::Type btype = board.getBoardType();
|
||||||
Firmware * fw = getCurrentFirmware();
|
Firmware * fw = getCurrentFirmware();
|
||||||
|
|
||||||
// Descending switch direction: NOT (!) switches
|
// Descending switch direction: NOT (!) switches
|
||||||
|
|
||||||
if (context != MixesContext && context != GlobalFunctionsContext && IS_ARM(board)) {
|
if (context != MixesContext && context != GlobalFunctionsContext && IS_ARM(btype)) {
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_FLIGHT_MODE, -fw->getCapability(FlightModes), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_FLIGHT_MODE, -fw->getCapability(FlightModes), generalSettings);
|
||||||
}
|
}
|
||||||
if (context != GlobalFunctionsContext) {
|
if (context != GlobalFunctionsContext) {
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_VIRTUAL, -fw->getCapability(LogicalSwitches), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_VIRTUAL, -fw->getCapability(LogicalSwitches), generalSettings);
|
||||||
}
|
}
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_ROTARY_ENCODER, -fw->getCapability(RotaryEncoders), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_ROTARY_ENCODER, -fw->getCapability(RotaryEncoders), generalSettings);
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_TRIM, -getBoardCapability(board, Board::NumTrimSwitches), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_TRIM, -board.getCapability(Board::NumTrimSwitches), generalSettings);
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_MULTIPOS_POT, -(fw->getCapability(MultiposPots) * fw->getCapability(MultiposPotsPositions)), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_MULTIPOS_POT, -(fw->getCapability(MultiposPots) * fw->getCapability(MultiposPotsPositions)), generalSettings);
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_SWITCH, -fw->getCapability(SwitchesPositions), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_SWITCH, -board.getCapability(Board::SwitchPositions), generalSettings);
|
||||||
|
|
||||||
// Ascending switch direction (including zero)
|
// Ascending switch direction (including zero)
|
||||||
|
|
||||||
|
@ -481,14 +464,14 @@ QStandardItemModel * Helpers::getRawSwitchItemModel(const GeneralSettings * cons
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_NONE, 1);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_NONE, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_SWITCH, fw->getCapability(SwitchesPositions), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_SWITCH, board.getCapability(Board::SwitchPositions), generalSettings);
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_MULTIPOS_POT, fw->getCapability(MultiposPots) * fw->getCapability(MultiposPotsPositions), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_MULTIPOS_POT, fw->getCapability(MultiposPots) * fw->getCapability(MultiposPotsPositions), generalSettings);
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_TRIM, getBoardCapability(board, Board::NumTrimSwitches), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_TRIM, board.getCapability(Board::NumTrimSwitches), generalSettings);
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_ROTARY_ENCODER, fw->getCapability(RotaryEncoders), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_ROTARY_ENCODER, fw->getCapability(RotaryEncoders), generalSettings);
|
||||||
if (context != GlobalFunctionsContext) {
|
if (context != GlobalFunctionsContext) {
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_VIRTUAL, fw->getCapability(LogicalSwitches), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_VIRTUAL, fw->getCapability(LogicalSwitches), generalSettings);
|
||||||
}
|
}
|
||||||
if (context != MixesContext && context != GlobalFunctionsContext && IS_ARM(board)) {
|
if (context != MixesContext && context != GlobalFunctionsContext && IS_ARM(btype)) {
|
||||||
addRawSwitchItems(itemModel, SWITCH_TYPE_FLIGHT_MODE, fw->getCapability(FlightModes), generalSettings);
|
addRawSwitchItems(itemModel, SWITCH_TYPE_FLIGHT_MODE, fw->getCapability(FlightModes), generalSettings);
|
||||||
}
|
}
|
||||||
if (context == SpecialFunctionsContext || context == GlobalFunctionsContext) {
|
if (context == SpecialFunctionsContext || context == GlobalFunctionsContext) {
|
||||||
|
@ -530,7 +513,7 @@ void Helpers::addRawSourceItems(QStandardItemModel * itemModel, const RawSourceT
|
||||||
QStandardItemModel * Helpers::getRawSourceItemModel(const GeneralSettings * const generalSettings, const ModelData * const model, unsigned int flags)
|
QStandardItemModel * Helpers::getRawSourceItemModel(const GeneralSettings * const generalSettings, const ModelData * const model, unsigned int flags)
|
||||||
{
|
{
|
||||||
QStandardItemModel * itemModel = new QStandardItemModel();
|
QStandardItemModel * itemModel = new QStandardItemModel();
|
||||||
Board::Type board = getCurrentBoard();
|
Boards board = Boards(getCurrentBoard());
|
||||||
Firmware * fw = getCurrentFirmware();
|
Firmware * fw = getCurrentFirmware();
|
||||||
|
|
||||||
if (flags & POPULATE_NONE) {
|
if (flags & POPULATE_NONE) {
|
||||||
|
@ -548,13 +531,13 @@ QStandardItemModel * Helpers::getRawSourceItemModel(const GeneralSettings * cons
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & POPULATE_SOURCES) {
|
if (flags & POPULATE_SOURCES) {
|
||||||
int totalSources = CPN_MAX_STICKS + getBoardCapability(board, Board::Pots) + getBoardCapability(board, Board::Sliders) + getBoardCapability(board, Board::MouseAnalogs);
|
int totalSources = CPN_MAX_STICKS + board.getCapability(Board::Pots) + board.getCapability(Board::Sliders) + board.getCapability(Board::MouseAnalogs);
|
||||||
addRawSourceItems(itemModel, SOURCE_TYPE_STICK, totalSources, generalSettings, model);
|
addRawSourceItems(itemModel, SOURCE_TYPE_STICK, totalSources, generalSettings, model);
|
||||||
addRawSourceItems(itemModel, SOURCE_TYPE_ROTARY_ENCODER, fw->getCapability(RotaryEncoders), generalSettings, model);
|
addRawSourceItems(itemModel, SOURCE_TYPE_ROTARY_ENCODER, fw->getCapability(RotaryEncoders), generalSettings, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & POPULATE_TRIMS) {
|
if (flags & POPULATE_TRIMS) {
|
||||||
addRawSourceItems(itemModel, SOURCE_TYPE_TRIM, getBoardCapability(board, Board::NumTrims), generalSettings, model);
|
addRawSourceItems(itemModel, SOURCE_TYPE_TRIM, board.getCapability(Board::NumTrims), generalSettings, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & POPULATE_SOURCES) {
|
if (flags & POPULATE_SOURCES) {
|
||||||
|
@ -562,7 +545,7 @@ QStandardItemModel * Helpers::getRawSourceItemModel(const GeneralSettings * cons
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & POPULATE_SWITCHES) {
|
if (flags & POPULATE_SWITCHES) {
|
||||||
addRawSourceItems(itemModel, SOURCE_TYPE_SWITCH, getBoardCapability(board, Board::Switches), generalSettings, model);
|
addRawSourceItems(itemModel, SOURCE_TYPE_SWITCH, board.getCapability(Board::Switches), generalSettings, model);
|
||||||
addRawSourceItems(itemModel, SOURCE_TYPE_CUSTOM_SWITCH, fw->getCapability(LogicalSwitches), generalSettings, model);
|
addRawSourceItems(itemModel, SOURCE_TYPE_CUSTOM_SWITCH, fw->getCapability(LogicalSwitches), generalSettings, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -573,7 +556,7 @@ QStandardItemModel * Helpers::getRawSourceItemModel(const GeneralSettings * cons
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & POPULATE_TELEMETRY) {
|
if (flags & POPULATE_TELEMETRY) {
|
||||||
if (IS_ARM(board)) {
|
if (IS_ARM(board.getBoardType())) {
|
||||||
addRawSourceItems(itemModel, SOURCE_TYPE_SPECIAL, 5, generalSettings, model);
|
addRawSourceItems(itemModel, SOURCE_TYPE_SPECIAL, 5, generalSettings, model);
|
||||||
|
|
||||||
if (model) {
|
if (model) {
|
||||||
|
@ -593,7 +576,7 @@ QStandardItemModel * Helpers::getRawSourceItemModel(const GeneralSettings * cons
|
||||||
exclude << TELEMETRY_SOURCE_TX_TIME;
|
exclude << TELEMETRY_SOURCE_TX_TIME;
|
||||||
if (!fw->getCapability(SportTelemetry))
|
if (!fw->getCapability(SportTelemetry))
|
||||||
exclude << TELEMETRY_SOURCE_SWR;
|
exclude << TELEMETRY_SOURCE_SWR;
|
||||||
if (!IS_ARM(board))
|
if (!IS_ARM(board.getBoardType()))
|
||||||
exclude << TELEMETRY_SOURCE_TIMER3;
|
exclude << TELEMETRY_SOURCE_TIMER3;
|
||||||
int count = ((flags & POPULATE_TELEMETRYEXT) ? TELEMETRY_SOURCES_STATUS_COUNT : TELEMETRY_SOURCES_COUNT);
|
int count = ((flags & POPULATE_TELEMETRYEXT) ? TELEMETRY_SOURCES_STATUS_COUNT : TELEMETRY_SOURCES_COUNT);
|
||||||
addRawSourceItems(itemModel, SOURCE_TYPE_TELEMETRY, count, generalSettings, model, 0, exclude);
|
addRawSourceItems(itemModel, SOURCE_TYPE_TELEMETRY, count, generalSettings, model, 0, exclude);
|
||||||
|
|
|
@ -146,9 +146,8 @@ namespace Helpers
|
||||||
QStandardItemModel * getRawSourceItemModel(const GeneralSettings * const generalSettings = NULL, const ModelData * const model = NULL, unsigned int flags = 0);
|
QStandardItemModel * getRawSourceItemModel(const GeneralSettings * const generalSettings = NULL, const ModelData * const model = NULL, unsigned int flags = 0);
|
||||||
|
|
||||||
void populateGvarUseCB(QComboBox *b, unsigned int phase);
|
void populateGvarUseCB(QComboBox *b, unsigned int phase);
|
||||||
void populateGvSourceCB(QComboBox *b, int value);
|
|
||||||
void populatePhasesCB(QComboBox *b, int value);
|
|
||||||
void populateGVCB(QComboBox & b, int value, const ModelData & model);
|
void populateGVCB(QComboBox & b, int value, const ModelData & model);
|
||||||
|
QString getAdjustmentString(int16_t val, const ModelData * model = NULL, bool sign = false);
|
||||||
|
|
||||||
void populateFileComboBox(QComboBox * b, const QSet<QString> & set, const QString & current);
|
void populateFileComboBox(QComboBox * b, const QSet<QString> & set, const QString & current);
|
||||||
void getFileComboBoxValue(QComboBox * b, char * dest, int length);
|
void getFileComboBoxValue(QComboBox * b, char * dest, int length);
|
||||||
|
|
|
@ -156,7 +156,7 @@ Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & genera
|
||||||
curveCB->setProperty("index", i);
|
curveCB->setProperty("index", i);
|
||||||
int numcurves = firmware->getCapability(NumCurves);
|
int numcurves = firmware->getCapability(NumCurves);
|
||||||
for (int j=-numcurves; j<=numcurves; j++) {
|
for (int j=-numcurves; j<=numcurves; j++) {
|
||||||
curveCB->addItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, j).toString(), j);
|
curveCB->addItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, j).toString(&model, false), j);
|
||||||
}
|
}
|
||||||
curveCB->setCurrentIndex(model.limitData[i].curve.value+numcurves);
|
curveCB->setCurrentIndex(model.limitData[i].curve.value+numcurves);
|
||||||
connect(curveCB, SIGNAL(currentIndexChanged(int)), this, SLOT(curveEdited()));
|
connect(curveCB, SIGNAL(currentIndexChanged(int)), this, SLOT(curveEdited()));
|
||||||
|
|
|
@ -337,6 +337,7 @@ void CustomFunctionsPanel::playMusic()
|
||||||
#define CUSTOM_FUNCTION_REPEAT (1<<7)
|
#define CUSTOM_FUNCTION_REPEAT (1<<7)
|
||||||
#define CUSTOM_FUNCTION_PLAY (1<<8)
|
#define CUSTOM_FUNCTION_PLAY (1<<8)
|
||||||
#define CUSTOM_FUNCTION_BL_COLOR (1<<9)
|
#define CUSTOM_FUNCTION_BL_COLOR (1<<9)
|
||||||
|
#define CUSTOM_FUNCTION_SHOW_FUNC (1<<10)
|
||||||
|
|
||||||
void CustomFunctionsPanel::customFunctionEdited()
|
void CustomFunctionsPanel::customFunctionEdited()
|
||||||
{
|
{
|
||||||
|
@ -357,7 +358,7 @@ void CustomFunctionsPanel::functionEdited()
|
||||||
RawSwitch swtch = functions[index].swtch;
|
RawSwitch swtch = functions[index].swtch;
|
||||||
functions[index].clear();
|
functions[index].clear();
|
||||||
functions[index].swtch = swtch;
|
functions[index].swtch = swtch;
|
||||||
functions[index].func = (AssignFunc)fswtchFunc[index]->itemData(fswtchFunc[index]->currentIndex()).toInt();
|
functions[index].func = (AssignFunc)fswtchFunc[index]->currentData().toInt();
|
||||||
refreshCustomFunction(index);
|
refreshCustomFunction(index);
|
||||||
emit modified();
|
emit modified();
|
||||||
lock = false;
|
lock = false;
|
||||||
|
@ -382,7 +383,8 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified)
|
||||||
cfn.adjustMode = (AssignFunc)fswtchGVmode[i]->currentIndex();
|
cfn.adjustMode = (AssignFunc)fswtchGVmode[i]->currentIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfn.swtch.toValue()) {
|
if (!cfn.isEmpty()) {
|
||||||
|
widgetsMask |= CUSTOM_FUNCTION_SHOW_FUNC;
|
||||||
|
|
||||||
if (func>=FuncOverrideCH1 && func<=FuncOverrideCH32) {
|
if (func>=FuncOverrideCH1 && func<=FuncOverrideCH32) {
|
||||||
if (model) {
|
if (model) {
|
||||||
|
@ -395,7 +397,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified)
|
||||||
cfn.param = fswtchParam[i]->value();
|
cfn.param = fswtchParam[i]->value();
|
||||||
}
|
}
|
||||||
fswtchParam[i]->setValue(cfn.param);
|
fswtchParam[i]->setValue(cfn.param);
|
||||||
widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE;
|
widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM | CUSTOM_FUNCTION_ENABLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (func==FuncLogs) {
|
else if (func==FuncLogs) {
|
||||||
|
@ -456,7 +458,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified)
|
||||||
if (modified)
|
if (modified)
|
||||||
cfn.param = fswtchParamT[i]->currentData().toInt();
|
cfn.param = fswtchParamT[i]->currentData().toInt();
|
||||||
populateFuncParamCB(fswtchParamT[i], func, cfn.param);
|
populateFuncParamCB(fswtchParamT[i], func, cfn.param);
|
||||||
widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_ENABLE;
|
widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM | CUSTOM_FUNCTION_ENABLE;
|
||||||
}
|
}
|
||||||
else if (func==FuncPlaySound || func==FuncPlayHaptic || func==FuncPlayValue || func==FuncPlayPrompt || func==FuncPlayBoth || func==FuncBackgroundMusic) {
|
else if (func==FuncPlaySound || func==FuncPlayHaptic || func==FuncPlayValue || func==FuncPlayPrompt || func==FuncPlayBoth || func==FuncBackgroundMusic) {
|
||||||
if (func != FuncBackgroundMusic) {
|
if (func != FuncBackgroundMusic) {
|
||||||
|
@ -467,7 +469,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified)
|
||||||
if (modified)
|
if (modified)
|
||||||
cfn.param = fswtchParamT[i]->currentData().toInt();
|
cfn.param = fswtchParamT[i]->currentData().toInt();
|
||||||
populateFuncParamCB(fswtchParamT[i], func, cfn.param);
|
populateFuncParamCB(fswtchParamT[i], func, cfn.param);
|
||||||
widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_REPEAT;
|
widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM | CUSTOM_FUNCTION_REPEAT;
|
||||||
}
|
}
|
||||||
else if (func==FuncPlayPrompt || func==FuncPlayBoth) {
|
else if (func==FuncPlayPrompt || func==FuncPlayBoth) {
|
||||||
if (firmware->getCapability(VoicesAsNumbers)) {
|
if (firmware->getCapability(VoicesAsNumbers)) {
|
||||||
|
@ -475,10 +477,10 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified)
|
||||||
fswtchParam[i]->setSingleStep(1);
|
fswtchParam[i]->setSingleStep(1);
|
||||||
fswtchParam[i]->setMinimum(0);
|
fswtchParam[i]->setMinimum(0);
|
||||||
if (func==FuncPlayPrompt) {
|
if (func==FuncPlayPrompt) {
|
||||||
widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT + CUSTOM_FUNCTION_GV_TOOGLE;
|
widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM | CUSTOM_FUNCTION_REPEAT | CUSTOM_FUNCTION_GV_TOOGLE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT;
|
widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM | CUSTOM_FUNCTION_REPEAT;
|
||||||
fswtchParamGV[i]->setChecked(false);
|
fswtchParamGV[i]->setChecked(false);
|
||||||
}
|
}
|
||||||
fswtchParam[i]->setMaximum(func==FuncPlayBoth ? 254 : 255);
|
fswtchParam[i]->setMaximum(func==FuncPlayBoth ? 254 : 255);
|
||||||
|
@ -563,7 +565,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fswtchFunc[i]->setVisible(cfn.swtch.toValue());
|
fswtchFunc[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_SHOW_FUNC);
|
||||||
fswtchParam[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_NUMERIC_PARAM);
|
fswtchParam[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_NUMERIC_PARAM);
|
||||||
fswtchParamTime[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_TIME_PARAM);
|
fswtchParamTime[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_TIME_PARAM);
|
||||||
fswtchParamGV[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_TOOGLE);
|
fswtchParamGV[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_TOOGLE);
|
||||||
|
@ -678,7 +680,7 @@ void CustomFunctionsPanel::populateFuncCB(QComboBox *b, unsigned int value)
|
||||||
// b->model()->setData(index, v, Qt::UserRole - 1);
|
// b->model()->setData(index, v, Qt::UserRole - 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
b->addItem(CustomFunctionData(AssignFunc(i)).funcToString(), i);
|
b->addItem(CustomFunctionData(AssignFunc(i)).funcToString(model), i);
|
||||||
if (i == value) {
|
if (i == value) {
|
||||||
b->setCurrentIndex(b->count()-1);
|
b->setCurrentIndex(b->count()-1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -468,7 +468,7 @@ void LogicalSwitchesPanel::populateAndSwitchCB(QComboBox *b, const RawSwitch & v
|
||||||
b->addItem(item.toString(), item.toValue());
|
b->addItem(item.toString(), item.toValue());
|
||||||
if (item == value) b->setCurrentIndex(b->count()-1);
|
if (item == value) b->setCurrentIndex(b->count()-1);
|
||||||
|
|
||||||
for (int i=1; i<=firmware->getCapability(SwitchesPositions); i++) {
|
for (int i=1; i <= Boards::getCapability(firmware->getBoard(), Board::SwitchPositions); i++) {
|
||||||
item = RawSwitch(SWITCH_TYPE_SWITCH, i);
|
item = RawSwitch(SWITCH_TYPE_SWITCH, i);
|
||||||
b->addItem(item.toString(), item.toValue());
|
b->addItem(item.toString(), item.toValue());
|
||||||
if (item == value) b->setCurrentIndex(b->count()-1);
|
if (item == value) b->setCurrentIndex(b->count()-1);
|
||||||
|
|
|
@ -140,7 +140,7 @@ QString MixesPanel::getMixerText(int dest, bool * new_ch)
|
||||||
QString str;
|
QString str;
|
||||||
bool newChannel = false;
|
bool newChannel = false;
|
||||||
if (dest < 0) {
|
if (dest < 0) {
|
||||||
str = modelPrinter.printMixerName(-dest);
|
str = modelPrinter.printChannelName(abs(dest)-1);
|
||||||
//highlight channel if needed
|
//highlight channel if needed
|
||||||
if (-dest == (int)highlightedSource) {
|
if (-dest == (int)highlightedSource) {
|
||||||
str = "<b>" + str + "</b>";
|
str = "<b>" + str + "</b>";
|
||||||
|
@ -150,7 +150,7 @@ QString MixesPanel::getMixerText(int dest, bool * new_ch)
|
||||||
else {
|
else {
|
||||||
MixData & mix = model->mixData[dest];
|
MixData & mix = model->mixData[dest];
|
||||||
//mix->destCh from 1 to 32
|
//mix->destCh from 1 to 32
|
||||||
str = modelPrinter.printMixerName(mix.destCh);
|
str = modelPrinter.printChannelName(mix.destCh-1);
|
||||||
|
|
||||||
if ((dest == 0) || (model->mixData[dest-1].destCh != mix.destCh)) {
|
if ((dest == 0) || (model->mixData[dest-1].destCh != mix.destCh)) {
|
||||||
newChannel = true;
|
newChannel = true;
|
||||||
|
|
|
@ -1104,7 +1104,7 @@ void SetupPanel::populateThrottleSourceCB()
|
||||||
ui->throttleSource->addItem(firmware->getAnalogInputName(4+i), i);
|
ui->throttleSource->addItem(firmware->getAnalogInputName(4+i), i);
|
||||||
}
|
}
|
||||||
for (int i=0; i<firmware->getCapability(Outputs); i++) {
|
for (int i=0; i<firmware->getCapability(Outputs); i++) {
|
||||||
ui->throttleSource->addItem(ModelPrinter::printChannelName(i));
|
ui->throttleSource->addItem(RawSource(SOURCE_TYPE_CH, i).toString(model, &generalSettings));
|
||||||
}
|
}
|
||||||
ui->throttleSource->setCurrentIndex(model->thrTraceSrc);
|
ui->throttleSource->setCurrentIndex(model->thrTraceSrc);
|
||||||
lock = false;
|
lock = false;
|
||||||
|
|
|
@ -76,18 +76,12 @@ QString ModelPrinter::printEEpromSize()
|
||||||
|
|
||||||
QString ModelPrinter::printChannelName(int idx)
|
QString ModelPrinter::printChannelName(int idx)
|
||||||
{
|
{
|
||||||
return tr("CH%1").arg(idx+1, 2, 10, QChar('0'));
|
QString str = RawSource(SOURCE_TYPE_CH, idx).toString(&model, &generalSettings);
|
||||||
}
|
if (firmware->getCapability(ChannelsName)) {
|
||||||
|
str = str.leftJustified(firmware->getCapability(ChannelsName) + 5, ' ', false);
|
||||||
QString ModelPrinter::printOutputName(int idx)
|
|
||||||
{
|
|
||||||
QString name = QString(model.limitData[idx].name).trimmed();
|
|
||||||
if (firmware->getCapability(ChannelsName) > 0 && !name.isEmpty()) {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return "";
|
|
||||||
}
|
}
|
||||||
|
str.append(' ');
|
||||||
|
return str.toHtmlEscaped();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ModelPrinter::printTrimIncrementMode()
|
QString ModelPrinter::printTrimIncrementMode()
|
||||||
|
@ -368,9 +362,9 @@ QString ModelPrinter::printInputLine(const ExpoData & input)
|
||||||
str += input.srcRaw.toString(&model, &generalSettings).toHtmlEscaped();
|
str += input.srcRaw.toString(&model, &generalSettings).toHtmlEscaped();
|
||||||
}
|
}
|
||||||
|
|
||||||
str += " " + tr("Weight").toHtmlEscaped() + QString("(%1)").arg(getGVarString(input.weight,true).toHtmlEscaped());
|
str += " " + tr("Weight").toHtmlEscaped() + QString("(%1)").arg(Helpers::getAdjustmentString(input.weight, &model, true).toHtmlEscaped());
|
||||||
if (input.curve.value)
|
if (input.curve.value)
|
||||||
str += " " + input.curve.toString().toHtmlEscaped();
|
str += " " + input.curve.toString(&model).toHtmlEscaped();
|
||||||
|
|
||||||
QString flightModesStr = printFlightModes(input.flightModes);
|
QString flightModesStr = printFlightModes(input.flightModes);
|
||||||
if (!flightModesStr.isEmpty())
|
if (!flightModesStr.isEmpty())
|
||||||
|
@ -388,7 +382,7 @@ QString ModelPrinter::printInputLine(const ExpoData & input)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.offset)
|
if (input.offset)
|
||||||
str += " " + tr("Offset(%1)").arg(getGVarString(input.offset)).toHtmlEscaped();
|
str += " " + tr("Offset(%1)").arg(Helpers::getAdjustmentString(input.offset, &model)).toHtmlEscaped();
|
||||||
|
|
||||||
if (firmware->getCapability(HasExpoNames) && input.name[0])
|
if (firmware->getCapability(HasExpoNames) && input.name[0])
|
||||||
str += QString(" [%1]").arg(input.name).toHtmlEscaped();
|
str += QString(" [%1]").arg(input.name).toHtmlEscaped();
|
||||||
|
@ -396,25 +390,6 @@ QString ModelPrinter::printInputLine(const ExpoData & input)
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ModelPrinter::printMixerName(int curDest)
|
|
||||||
{
|
|
||||||
QString str = printChannelName(curDest-1) + " ";
|
|
||||||
if (firmware->getCapability(ChannelsName) > 0) {
|
|
||||||
QString name = model.limitData[curDest-1].name;
|
|
||||||
if (!name.isEmpty()) {
|
|
||||||
name = QString("(") + name + QString(")");
|
|
||||||
}
|
|
||||||
name.append(" ");
|
|
||||||
str += name.left(8);
|
|
||||||
}
|
|
||||||
return str.toHtmlEscaped();
|
|
||||||
}
|
|
||||||
|
|
||||||
QString ModelPrinter::printMixerLine(int idx, bool showMultiplex, int highlightedSource)
|
|
||||||
{
|
|
||||||
return printMixerLine(model.mixData[idx], highlightedSource, showMultiplex);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString ModelPrinter::printMixerLine(const MixData & mix, bool showMultiplex, int highlightedSource)
|
QString ModelPrinter::printMixerLine(const MixData & mix, bool showMultiplex, int highlightedSource)
|
||||||
{
|
{
|
||||||
QString str = " ";
|
QString str = " ";
|
||||||
|
@ -439,7 +414,7 @@ QString ModelPrinter::printMixerLine(const MixData & mix, bool showMultiplex, in
|
||||||
if (mix.mltpx == MLTPX_MUL && !showMultiplex)
|
if (mix.mltpx == MLTPX_MUL && !showMultiplex)
|
||||||
str += " " + QString("MULT!").toHtmlEscaped();
|
str += " " + QString("MULT!").toHtmlEscaped();
|
||||||
else
|
else
|
||||||
str += " " + tr("Weight(%1)").arg(getGVarString(mix.weight, true)).toHtmlEscaped();
|
str += " " + tr("Weight(%1)").arg(Helpers::getAdjustmentString(mix.weight, &model, true)).toHtmlEscaped();
|
||||||
|
|
||||||
QString flightModesStr = printFlightModes(mix.flightModes);
|
QString flightModesStr = printFlightModes(mix.flightModes);
|
||||||
if (!flightModesStr.isEmpty())
|
if (!flightModesStr.isEmpty())
|
||||||
|
@ -456,9 +431,9 @@ QString ModelPrinter::printMixerLine(const MixData & mix, bool showMultiplex, in
|
||||||
if (firmware->getCapability(HasNoExpo) && mix.noExpo)
|
if (firmware->getCapability(HasNoExpo) && mix.noExpo)
|
||||||
str += " " + tr("No DR/Expo").toHtmlEscaped();
|
str += " " + tr("No DR/Expo").toHtmlEscaped();
|
||||||
if (mix.sOffset)
|
if (mix.sOffset)
|
||||||
str += " " + tr("Offset(%1)").arg(getGVarString(mix.sOffset)).toHtmlEscaped();
|
str += " " + tr("Offset(%1)").arg(Helpers::getAdjustmentString(mix.sOffset, &model)).toHtmlEscaped();
|
||||||
if (mix.curve.value)
|
if (mix.curve.value)
|
||||||
str += " " + mix.curve.toString().toHtmlEscaped();
|
str += " " + mix.curve.toString(&model).toHtmlEscaped();
|
||||||
int scale = firmware->getCapability(SlowScale);
|
int scale = firmware->getCapability(SlowScale);
|
||||||
if (scale == 0)
|
if (scale == 0)
|
||||||
scale = 1;
|
scale = 1;
|
||||||
|
@ -519,7 +494,7 @@ QString ModelPrinter::printLogicalSwitchLine(int idx)
|
||||||
const QString sw1Name = RawSwitch(ls.val1).toString(getCurrentBoard(), &generalSettings);
|
const QString sw1Name = RawSwitch(ls.val1).toString(getCurrentBoard(), &generalSettings);
|
||||||
const QString sw2Name = RawSwitch(ls.val2).toString(getCurrentBoard(), &generalSettings);
|
const QString sw2Name = RawSwitch(ls.val2).toString(getCurrentBoard(), &generalSettings);
|
||||||
|
|
||||||
if (!ls.func)
|
if (ls.isEmpty())
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
if (ls.andsw!=0) {
|
if (ls.andsw!=0) {
|
||||||
|
@ -642,7 +617,7 @@ QString ModelPrinter::printCustomFunctionLine(int idx)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
result += cf.swtch.toString(getCurrentBoard(), &generalSettings) + " - ";
|
result += cf.swtch.toString(getCurrentBoard(), &generalSettings) + " - ";
|
||||||
result += cf.funcToString() + "(";
|
result += cf.funcToString(&model) + " (";
|
||||||
result += cf.paramToString(&model) + ")";
|
result += cf.paramToString(&model) + ")";
|
||||||
if (!cf.repeatToString().isEmpty())
|
if (!cf.repeatToString().isEmpty())
|
||||||
result += " " + cf.repeatToString();
|
result += " " + cf.repeatToString();
|
||||||
|
@ -651,6 +626,11 @@ QString ModelPrinter::printCustomFunctionLine(int idx)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString ModelPrinter::printCurveName(int idx)
|
||||||
|
{
|
||||||
|
return model.curves[idx].nameToString(idx).toHtmlEscaped();
|
||||||
|
}
|
||||||
|
|
||||||
QString ModelPrinter::printCurve(int idx)
|
QString ModelPrinter::printCurve(int idx)
|
||||||
{
|
{
|
||||||
QString result;
|
QString result;
|
||||||
|
|
|
@ -75,13 +75,11 @@ class ModelPrinter: public QObject
|
||||||
QString printInputName(int idx);
|
QString printInputName(int idx);
|
||||||
QString printInputLine(int idx);
|
QString printInputLine(int idx);
|
||||||
QString printInputLine(const ExpoData & ed);
|
QString printInputLine(const ExpoData & ed);
|
||||||
QString printMixerName(int curDest);
|
|
||||||
QString printMixerLine(int idx, bool showMultiplex, int highlightedSource = 0);
|
|
||||||
QString printMixerLine(const MixData & md, bool showMultiplex, int highlightedSource = 0);
|
QString printMixerLine(const MixData & md, bool showMultiplex, int highlightedSource = 0);
|
||||||
QString printLogicalSwitchLine(int idx);
|
QString printLogicalSwitchLine(int idx);
|
||||||
QString printCustomFunctionLine(int idx);
|
QString printCustomFunctionLine(int idx);
|
||||||
static QString printChannelName(int idx);
|
QString printChannelName(int idx);
|
||||||
QString printOutputName(int idx);
|
QString printCurveName(int idx);
|
||||||
QString printCurve(int idx);
|
QString printCurve(int idx);
|
||||||
QString createCurveImage(int idx, QTextDocument * document);
|
QString createCurveImage(int idx, QTextDocument * document);
|
||||||
|
|
||||||
|
|
|
@ -351,7 +351,6 @@ QString MultiModelPrinter::printLimits()
|
||||||
columns.append("<table border='0' cellspacing='0' cellpadding='1' width='100%'>" \
|
columns.append("<table border='0' cellspacing='0' cellpadding='1' width='100%'>" \
|
||||||
"<tr>" \
|
"<tr>" \
|
||||||
" <td><b>" + tr("Channel") + "</b></td>" \
|
" <td><b>" + tr("Channel") + "</b></td>" \
|
||||||
" <td><b>" + (firmware->getCapability(ChannelsName) > 0 ? tr("Name") : "") + "</b></td>" \
|
|
||||||
" <td><b>" + tr("Offset") + "</b></td>" \
|
" <td><b>" + tr("Offset") + "</b></td>" \
|
||||||
" <td><b>" + tr("Min") + "</b></td>" \
|
" <td><b>" + tr("Min") + "</b></td>" \
|
||||||
" <td><b>" + tr("Max") + "</b></td>" \
|
" <td><b>" + tr("Max") + "</b></td>" \
|
||||||
|
@ -365,8 +364,6 @@ QString MultiModelPrinter::printLimits()
|
||||||
continue;
|
continue;
|
||||||
columns.append("<tr><td><b>");
|
columns.append("<tr><td><b>");
|
||||||
COMPARE(modelPrinter->printChannelName(i));
|
COMPARE(modelPrinter->printChannelName(i));
|
||||||
columns.append("</b></td><td>");
|
|
||||||
COMPARE(modelPrinter->printOutputName(i));
|
|
||||||
columns.append("</td><td>");
|
columns.append("</td><td>");
|
||||||
COMPARE(model->limitData[i].offsetToString());
|
COMPARE(model->limitData[i].offsetToString());
|
||||||
columns.append("</td><td>");
|
columns.append("</td><td>");
|
||||||
|
@ -441,7 +438,7 @@ QString MultiModelPrinter::printMixers()
|
||||||
}
|
}
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
columns.append("<tr><td width='20%'><b>");
|
columns.append("<tr><td width='20%'><b>");
|
||||||
COMPARE(modelPrinter->printMixerName(i+1));
|
COMPARE(modelPrinter->printChannelName(i));
|
||||||
columns.append("</b></td><td>");
|
columns.append("</b></td><td>");
|
||||||
for (int j=0; j<count; j++) {
|
for (int j=0; j<count; j++) {
|
||||||
if (j > 0)
|
if (j > 0)
|
||||||
|
@ -471,7 +468,9 @@ QString MultiModelPrinter::printCurves(QTextDocument * document)
|
||||||
}
|
}
|
||||||
if (!curveEmpty) {
|
if (!curveEmpty) {
|
||||||
count++;
|
count++;
|
||||||
columns.append("<tr><td width='20%'><b>" + tr("CV%1").arg(i+1) + "</b></td><td>");
|
columns.append("<tr><td width='20%'><b>");
|
||||||
|
COMPARE(modelPrinter->printCurveName(i));
|
||||||
|
columns.append("</b></td><td>");
|
||||||
COMPARE(modelPrinter->printCurve(i));
|
COMPARE(modelPrinter->printCurve(i));
|
||||||
for (int k=0; k < modelPrinterMap.size(); k++)
|
for (int k=0; k < modelPrinterMap.size(); k++)
|
||||||
columns.append(k, QString("<br/><img src='%1' border='0' />").arg(modelPrinterMap.value(k).second->createCurveImage(i, document)));
|
columns.append(k, QString("<br/><img src='%1' border='0' />").arg(modelPrinterMap.value(k).second->createCurveImage(i, document)));
|
||||||
|
@ -495,7 +494,7 @@ QString MultiModelPrinter::printLogicalSwitches()
|
||||||
for (int i=0; i<firmware->getCapability(LogicalSwitches); i++) {
|
for (int i=0; i<firmware->getCapability(LogicalSwitches); i++) {
|
||||||
bool lsEmpty = true;
|
bool lsEmpty = true;
|
||||||
for (int k=0; k < modelPrinterMap.size(); k++) {
|
for (int k=0; k < modelPrinterMap.size(); k++) {
|
||||||
if (!modelPrinterMap.value(k).second->printLogicalSwitchLine(i).isEmpty()) {
|
if (!modelPrinterMap.value(k).first->logicalSw[i].isEmpty()) {
|
||||||
lsEmpty = false;
|
lsEmpty = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -524,7 +523,7 @@ QString MultiModelPrinter::printCustomFunctions()
|
||||||
for (int i=0; i < firmware->getCapability(CustomFunctions); i++) {
|
for (int i=0; i < firmware->getCapability(CustomFunctions); i++) {
|
||||||
bool sfEmpty = true;
|
bool sfEmpty = true;
|
||||||
for (int k=0; k < modelPrinterMap.size(); k++) {
|
for (int k=0; k < modelPrinterMap.size(); k++) {
|
||||||
if (modelPrinterMap.value(k).first->customFn[i].swtch.type != SWITCH_TYPE_NONE) {
|
if (!modelPrinterMap.value(k).first->customFn[i].isEmpty()) {
|
||||||
sfEmpty = false;
|
sfEmpty = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,6 +171,16 @@ void GeneralSettings::convert(Board::Type before, Board::Type after)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RadioData
|
||||||
|
*/
|
||||||
|
|
||||||
|
RadioData::RadioData()
|
||||||
|
{
|
||||||
|
models.resize(getCurrentFirmware()->getCapability(Models));
|
||||||
|
}
|
||||||
|
|
||||||
void RadioData::setCurrentModel(unsigned int index)
|
void RadioData::setCurrentModel(unsigned int index)
|
||||||
{
|
{
|
||||||
generalSettings.currModelIndex = index;
|
generalSettings.currModelIndex = index;
|
||||||
|
|
|
@ -316,7 +316,7 @@ class CurveReference {
|
||||||
CurveRefType type;
|
CurveRefType type;
|
||||||
int value;
|
int value;
|
||||||
|
|
||||||
QString toString() const;
|
QString toString(const ModelData * model = NULL, bool verbose = true) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum InputMode {
|
enum InputMode {
|
||||||
|
@ -361,6 +361,8 @@ class CurveData {
|
||||||
CurveData();
|
CurveData();
|
||||||
void clear(int count);
|
void clear(int count);
|
||||||
bool isEmpty() const;
|
bool isEmpty() const;
|
||||||
|
QString nameToString(const int idx) const;
|
||||||
|
|
||||||
CurveType type;
|
CurveType type;
|
||||||
bool smooth;
|
bool smooth;
|
||||||
int count;
|
int count;
|
||||||
|
@ -468,7 +470,9 @@ class LogicalSwitchData { // Logical Switches data
|
||||||
unsigned int delay;
|
unsigned int delay;
|
||||||
unsigned int duration;
|
unsigned int duration;
|
||||||
int andsw;
|
int andsw;
|
||||||
|
|
||||||
void clear() { memset(this, 0, sizeof(LogicalSwitchData)); }
|
void clear() { memset(this, 0, sizeof(LogicalSwitchData)); }
|
||||||
|
bool isEmpty() const;
|
||||||
CSFunctionFamily getFunctionFamily() const;
|
CSFunctionFamily getFunctionFamily() const;
|
||||||
unsigned int getRangeFlags() const;
|
unsigned int getRangeFlags() const;
|
||||||
QString funcToString() const;
|
QString funcToString() const;
|
||||||
|
@ -531,8 +535,10 @@ class CustomFunctionData { // Function Switches data
|
||||||
unsigned int enabled; // TODO perhaps not any more the right name
|
unsigned int enabled; // TODO perhaps not any more the right name
|
||||||
unsigned int adjustMode;
|
unsigned int adjustMode;
|
||||||
int repeatParam;
|
int repeatParam;
|
||||||
|
|
||||||
void clear();
|
void clear();
|
||||||
QString funcToString() const;
|
bool isEmpty() const;
|
||||||
|
QString funcToString(const ModelData * model = NULL) const;
|
||||||
QString paramToString(const ModelData * model) const;
|
QString paramToString(const ModelData * model) const;
|
||||||
QString repeatToString() const;
|
QString repeatToString() const;
|
||||||
QString enabledToString() const;
|
QString enabledToString() const;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue