void PanelConfig::on_defaultButton_clicked() { QMessageBox::StandardButton response = QMessageBox::question(this, "AeroQuad Communicator", "Are you sure you want to revert all values for " + panelConfig[currentPanel].configName + " to their default values?"); if (response == QMessageBox::Yes) for (int index=0; index<defaultPanelConfig[currentPanel].parameters.size(); index++) { panelConfig[currentPanel].parameters = defaultPanelConfig[currentPanel].parameters; updateParameterValues(); } }
void PanelConfig::parseMessage(QByteArray incoming) { QString message = incoming; message.chop(2); // remove CR/LF QStringList parameters = message.split(","); if (parameters[parameters.size()-1] == "") parameters.removeLast(); for (int index=0; index<panelConfig[currentPanel].parameters.size(); index++) if (index < parameters.size()) // Protect if incoming message is incorrect size panelConfig[currentPanel].parameters[index].value = parameters[index]; updateParameterValues(); }
void PanelConfig::selectConfig(int index) { ui->configTable->clear(); setupTableHeader(); ui->configTable->setRowCount(panelConfig[index].parameters.size()); currentPanel = index; updateParameterValues(); ui->configTable->selectRow(0); selectDescription(0, 0); QByteArray message(panelConfig[index].telemetry.toUtf8()); sendMessage(message); }
void QFRDRFCSFitFunctionSimulator::updateFitFunction() { updateParameterValues(); replotFitFunction(); }
void QFRDRFCSFitFunctionSimulator::displayModel(bool newWidget){ QScopedPointer<QFFitFunction> ffunc(getFitFunction(NULL)); if (!ffunc) { ///////////////////////////////////////////////////////////////////////////////////////////// // delete all fit parameter widgets ///////////////////////////////////////////////////////////////////////////////////////////// for (int i=0; i<m_fitParameters.size(); i++) { if (m_fitParameters[i]) { m_fitParameters[i]->disableDatastore(); disconnect(tbEditRanges, SIGNAL(currentChanged(int)), m_fitParameters[i], SLOT(setEditRange(int))); disconnect(m_fitParameters[i], SIGNAL(valueChanged(QString, double)), this, SLOT(updateFitFunction())); disconnect(m_fitParameters[i], SIGNAL(errorChanged(QString, double)), this, SLOT(updateFitFunction())); disconnect(m_fitParameters[i], SIGNAL(rangeChanged(QString, double, double)), this, SLOT(updateFitFunction())); delete m_fitParameters[i]; } } m_fitParameters.clear(); return; } if (newWidget) { ///////////////////////////////////////////////////////////////////////////////////////////// // first delete all fit parameter widgets ///////////////////////////////////////////////////////////////////////////////////////////// for (int i=0; i<m_fitParameters.size(); i++) { if (m_fitParameters[i]) { m_fitParameters[i]->disableDatastore(); //disconnect(btnEditRanges, SIGNAL(toggled(bool)), m_fitParameters[i], SLOT(setEditRange(bool))); //disconnect(btnEditRanges, SIGNAL(toggled(bool)), m_fitParameters[i], SLOT(unsetEditValues(bool))); disconnect(tbEditRanges, SIGNAL(currentChanged(int)), m_fitParameters[i], SLOT(setEditRange(int))); disconnect(tbEditRanges, SIGNAL(currentChanged(int)), m_fitParameters[i], SLOT(unsetEditValues(int))); disconnect(m_fitParameters[i], SIGNAL(valueChanged(QString, double)), this, SLOT(updateFitFunction())); disconnect(m_fitParameters[i], SIGNAL(errorChanged(QString, double)), this, SLOT(updateFitFunction())); disconnect(m_fitParameters[i], SIGNAL(rangeChanged(QString, double, double)), this, SLOT(updateFitFunction())); delete m_fitParameters[i]; } } // remove all widgets from layout QLayoutItem *child; while ((child = layParameters->takeAt(0)) != 0) { delete child; } ///////////////////////////////////////////////////////////////////////////////////////////// // create header widget ///////////////////////////////////////////////////////////////////////////////////////////// QFFitParameterWidgetWrapper* header=new QFFitParameterWidgetWrapper(this, layParameters, 0, "", QFFitParameterWidgetWrapper::Header, true, true, QFFitFunction::DisplayError, true, this, tr("parameter")); m_fitParameters.append(header); //connect(btnEditRanges, SIGNAL(toggled(bool)), header, SLOT(setEditRange(bool))); //connect(btnEditRanges, SIGNAL(toggled(bool)), header, SLOT(unsetEditValues(bool))); connect(tbEditRanges, SIGNAL(currentChanged(int)), header, SLOT(setEditRange(int))); connect(tbEditRanges, SIGNAL(currentChanged(int)), header, SLOT(unsetEditValues(int))); //header->setEditRange(btnEditRanges->isChecked()); //header->unsetEditValues(!btnEditRanges->isChecked()); header->setEditRange(tbEditRanges->currentIndex()); header->unsetEditValues(tbEditRanges->currentIndex()); ///////////////////////////////////////////////////////////////////////////////////////////// // create new parameter widgets ///////////////////////////////////////////////////////////////////////////////////////////// for (int i=0; i<ffunc->paramCount(); i++) { QString id=ffunc->getParameterID(i); QFFitFunction::ParameterDescription d=ffunc->getDescription(i); QFFitParameterWidgetWrapper::WidgetType wtype=QFFitParameterWidgetWrapper::FloatEdit; if (d.widgetType==QFFitFunction::IntNumber) wtype=QFFitParameterWidgetWrapper::IntSpinBox; if (d.widgetType==QFFitFunction::IntCombo) wtype=QFFitParameterWidgetWrapper::IntDropDown; if (d.widgetType==QFFitFunction::LogFloatNumber) wtype=QFFitParameterWidgetWrapper::LogFloatEdit; bool editable=d.userEditable; bool displayFix=d.userEditable; QFFitFunction::ErrorDisplayMode displayError=d.displayError; bool editRange=d.userEditable && d.userRangeEditable; if (!d.fit) { displayFix=false; } QString l=QString("<font size=\"+1\">%1</font>:").arg(d.label); if (!d.unit.isEmpty()) l=QString("<font size=\"+1\">%1 [%2]</font>:").arg(d.label).arg(d.unitLabel); l.replace("<sub>", "<sub><font size=\"+2\">", Qt::CaseInsensitive); l.replace("<sup>", "<sup><font size=\"+2\">", Qt::CaseInsensitive); l.replace("</sup>", "</font></sup>", Qt::CaseInsensitive); l.replace("</sub>", "</font></sub>", Qt::CaseInsensitive); QFFitParameterWidgetWrapper* fpw=new QFFitParameterWidgetWrapper(this, layParameters, i+1, id, wtype, editable, displayFix, displayError, editRange, this, l, d.comboItems); fpw->setUnit(d.unit); fpw->setIncrement(d.inc); fpw->setWidgetWidth(75); fpw->setRangeEnabled(true); fpw->setValueAbsoluteRange(d.absMinValue, d.absMaxValue); fpw->setRangeEnabled(true); fpw->setToolTip(d.name); m_fitParameters.append(fpw); connect(tbEditRanges, SIGNAL(currentChanged(int)), fpw, SLOT(unsetEditValues(int))); connect(tbEditRanges, SIGNAL(currentChanged(int)), fpw, SLOT(setEditRange(int))); connect(fpw, SIGNAL(valueChanged(QString, double)), this, SLOT(updateFitFunction())); connect(fpw, SIGNAL(errorChanged(QString, double)), this, SLOT(updateFitFunction())); connect(fpw, SIGNAL(rangeChanged(QString, double, double)), this, SLOT(updateFitFunction())); fpw->setEditRange(tbEditRanges->currentIndex()); fpw->unsetEditValues(tbEditRanges->currentIndex()); } // add stretcher item in bottom row layParameters->addItem(new QSpacerItem(5,5, QSizePolicy::Minimum, QSizePolicy::Expanding), layParameters->rowCount(), 0); } updateParameterValues(); }