diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 31f08c1fba067585fe3d2b87fffed2a0949e2e93..edbfbe65d600c3d837476dbd67ae08b61105468b 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -257,7 +257,8 @@ FORMS += src/ui/MainWindow.ui \ src/ui/configuration/FailSafeConfig.ui \ src/ui/configuration/AdvancedParamConfig.ui \ src/ui/configuration/ArduCopterPidConfig.ui \ - src/ui/configuration/ApmPlaneLevel.ui + src/ui/configuration/ApmPlaneLevel.ui \ + src/ui/configuration/ParamWidget.ui INCLUDEPATH += src \ src/ui \ src/ui/linechart \ @@ -439,7 +440,8 @@ HEADERS += src/MG.h \ src/ui/configuration/FailSafeConfig.h \ src/ui/configuration/AdvancedParamConfig.h \ src/ui/configuration/ArduCopterPidConfig.h \ - src/ui/configuration/ApmPlaneLevel.h + src/ui/configuration/ApmPlaneLevel.h \ + src/ui/configuration/ParamWidget.h # Google Earth is only supported on Mac OS and Windows with Visual Studio Compiler macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010|win32-msvc2012::HEADERS += src/ui/map3D/QGCGoogleEarthView.h @@ -639,7 +641,8 @@ SOURCES += src/main.cc \ src/ui/configuration/FailSafeConfig.cc \ src/ui/configuration/AdvancedParamConfig.cc \ src/ui/configuration/ArduCopterPidConfig.cc \ - src/ui/configuration/ApmPlaneLevel.cc + src/ui/configuration/ApmPlaneLevel.cc \ + src/ui/configuration/ParamWidget.cc # Enable Google Earth only on Mac OS and Windows with Visual Studio compiler macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010|win32-msvc2012::SOURCES += src/ui/map3D/QGCGoogleEarthView.cc diff --git a/src/ui/configuration/AdvancedParamConfig.cc b/src/ui/configuration/AdvancedParamConfig.cc index 4ab92e0b7583d15163b90081130216332aec02bb..5f4102c242e95bb9a217816adfc8484260811411 100644 --- a/src/ui/configuration/AdvancedParamConfig.cc +++ b/src/ui/configuration/AdvancedParamConfig.cc @@ -1,7 +1,7 @@ #include "AdvancedParamConfig.h" -AdvancedParamConfig::AdvancedParamConfig(QWidget *parent) : QWidget(parent) +AdvancedParamConfig::AdvancedParamConfig(QWidget *parent) : AP2ConfigWidget(parent) { ui.setupUi(this); } @@ -9,3 +9,27 @@ AdvancedParamConfig::AdvancedParamConfig(QWidget *parent) : QWidget(parent) AdvancedParamConfig::~AdvancedParamConfig() { } +void AdvancedParamConfig::addRange(QString title,QString description,QString param,double min,double max) +{ + ParamWidget *widget = new ParamWidget(ui.scrollAreaWidgetContents); + paramToWidgetMap[param] = widget; + widget->setupDouble(title + "(" + param + ")",description,0,min,max); + ui.verticalLayout->addWidget(widget); + widget->show(); +} + +void AdvancedParamConfig::addCombo(QString title,QString description,QString param,QList > valuelist) +{ + ParamWidget *widget = new ParamWidget(ui.scrollAreaWidgetContents); + paramToWidgetMap[param] = widget; + widget->setupCombo(title + "(" + param + ")",description,valuelist); + ui.verticalLayout->addWidget(widget); + widget->show(); +} +void AdvancedParamConfig::parameterChanged(int uas, int component, QString parameterName, QVariant value) +{ + if (paramToWidgetMap.contains(parameterName)) + { + paramToWidgetMap[parameterName]->setValue(value.toDouble()); + } +} diff --git a/src/ui/configuration/AdvancedParamConfig.h b/src/ui/configuration/AdvancedParamConfig.h index 5cf8b9fafbcb6f93d329d4073c50a299020e4af8..9c69156d89b6b0b231a10148e2343d194de4bf61 100644 --- a/src/ui/configuration/AdvancedParamConfig.h +++ b/src/ui/configuration/AdvancedParamConfig.h @@ -3,16 +3,21 @@ #include #include "ui_AdvancedParamConfig.h" - -class AdvancedParamConfig : public QWidget +#include "AP2ConfigWidget.h" +#include "ParamWidget.h" +class AdvancedParamConfig : public AP2ConfigWidget { Q_OBJECT public: explicit AdvancedParamConfig(QWidget *parent = 0); ~AdvancedParamConfig(); - + void addRange(QString title,QString description,QString param,double min,double max); + void addCombo(QString title,QString description,QString param,QList > valuelist); +private slots: + void parameterChanged(int uas, int component, QString parameterName, QVariant value); private: + QMap paramToWidgetMap; Ui::AdvancedParamConfig ui; }; diff --git a/src/ui/configuration/AdvancedParamConfig.ui b/src/ui/configuration/AdvancedParamConfig.ui index d49c182d9ee40ac0c53cb10e8a51472d81566983..596861a3a2aeb2ea2792cc74ea184cf89ee3dae1 100644 --- a/src/ui/configuration/AdvancedParamConfig.ui +++ b/src/ui/configuration/AdvancedParamConfig.ui @@ -6,26 +6,44 @@ 0 0 - 400 - 300 + 725 + 632 Form - - - - 10 - 10 - 181 - 31 - - - - <h2>Advanced Params</h2> - - + + + + + <h2>Advanced Params</h2> + + + + + + + true + + + + + 0 + 0 + 705 + 585 + + + + + + + + + + + diff --git a/src/ui/configuration/ApmHardwareConfig.cc b/src/ui/configuration/ApmHardwareConfig.cc index bb1ab1a78344fe7f78a2a8fb95b5ef4d4413ba71..3b9c5655d73c644c52a5672b954f577fa2350a45 100644 --- a/src/ui/configuration/ApmHardwareConfig.cc +++ b/src/ui/configuration/ApmHardwareConfig.cc @@ -30,7 +30,6 @@ This file is part of the QGROUNDCONTROL project */ #include "ApmHardwareConfig.h" - ApmHardwareConfig::ApmHardwareConfig(QWidget *parent) : QWidget(parent) { ui.setupUi(this); @@ -191,4 +190,10 @@ void ApmHardwareConfig::activeUASSet(UASInterface *uas) ui.optionalHardwareButton->setChecked(false); ui.radio3DRButton->setVisible(false); ui.antennaTrackerButton->setVisible(false); + + + + + + } diff --git a/src/ui/configuration/ApmSoftwareConfig.cc b/src/ui/configuration/ApmSoftwareConfig.cc index cfecf5de17669b998d058ae653c7eea453748eeb..a8a2e4ddd841fa3770c69c5f178132739ed8d704 100644 --- a/src/ui/configuration/ApmSoftwareConfig.cc +++ b/src/ui/configuration/ApmSoftwareConfig.cc @@ -1,4 +1,7 @@ #include "ApmSoftwareConfig.h" +#include +#include +#include ApmSoftwareConfig::ApmSoftwareConfig(QWidget *parent) : QWidget(parent) @@ -82,4 +85,356 @@ void ApmSoftwareConfig::activeUASSet(UASInterface *uas) ui.advParamListButton->setVisible(true); ui.arduCoperPidButton->setVisible(true); + + + QDir autopilotdir(qApp->applicationDirPath() + "/files/" + uas->getAutopilotTypeName().toLower()); + QFile xmlfile(autopilotdir.absolutePath() + "/arduplane.pdef.xml"); + if (xmlfile.exists() && !xmlfile.open(QIODevice::ReadOnly)) + { + return; + } + + QXmlStreamReader xml(xmlfile.readAll()); + xmlfile.close(); + + //TODO: Testing to ensure that incorrectly formated XML won't break this. + while (!xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "paramfile") + { + xml.readNext(); + while ((xml.name() != "paramfile") && !xml.atEnd()) + { + QString valuetype = ""; + if (xml.isStartElement() && (xml.name() == "vehicles" || xml.name() == "libraries")) //Enter into the vehicles loop + { + valuetype = xml.name().toString(); + xml.readNext(); + while ((xml.name() != valuetype) && !xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "parameters") //This is a parameter block + { + QString parametersname = ""; + if (xml.attributes().hasAttribute("name")) + { + parametersname = xml.attributes().value("name").toString(); + } + QVariantMap genset; + QVariantMap advset; + + QString setname = parametersname; + xml.readNext(); + int genarraycount = 0; + int advarraycount = 0; + while ((xml.name() != "parameters") && !xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "param") + { + QString humanname = xml.attributes().value("humanName").toString(); + QString name = xml.attributes().value("name").toString(); + QString tab= xml.attributes().value("user").toString(); + if (tab == "Advanced") + { + advset["title"] = parametersname; + } + else + { + genset["title"] = parametersname; + } + if (name.contains(":")) + { + name = name.split(":")[1]; + } + QString docs = xml.attributes().value("documentation").toString(); + //paramTooltips[name] = name + " - " + docs; + + int type = -1; //Type of item + QMap fieldmap; + QMap valuemap; + xml.readNext(); + while ((xml.name() != "param") && !xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "values") + { + type = 1; //1 is a combobox + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "TYPE"] = "COMBO"; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_DESCRIPTION"] = humanname; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_PARAMID"] = name; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_COMPONENTID"] = 1; + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "TYPE"] = "COMBO"; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_DESCRIPTION"] = humanname; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_PARAMID"] = name; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_COMPONENTID"] = 1; + } + int paramcount = 0; + xml.readNext(); + while ((xml.name() != "values") && !xml.atEnd()) + { + if (xml.isStartElement() && xml.name() == "value") + { + + QString code = xml.attributes().value("code").toString(); + QString arg = xml.readElementText(); + valuemap[code] = arg; + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(paramcount) + "_TEXT"] = arg; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(paramcount) + "_VAL"] = code.toInt(); + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(paramcount) + "_TEXT"] = arg; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(paramcount) + "_VAL"] = code.toInt(); + } + paramcount++; + } + xml.readNext(); + } + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_COMBOBOX_COUNT"] = paramcount; + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_COMBOBOX_COUNT"] = paramcount; + } + } + if (xml.isStartElement() && xml.name() == "field") + { + type = 2; //2 is a slider + QString fieldtype = xml.attributes().value("name").toString(); + QString text = xml.readElementText(); + fieldmap[fieldtype] = text; + } + xml.readNext(); + } + if (type == -1) + { + //Nothing inside! Assume it's a value, give it a default range. + type = 2; + QString fieldtype = "Range"; + QString text = "0 100"; //TODO: Determine a better way of figuring out default ranges. + fieldmap[fieldtype] = text; + } + if (type == 2) + { + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "TYPE"] = "SLIDER"; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_DESCRIPTION"] = humanname; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_PARAMID"] = name; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_COMPONENTID"] = 1; + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "TYPE"] = "SLIDER"; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_DESCRIPTION"] = humanname; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_PARAMID"] = name; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_COMPONENTID"] = 1; + } + if (fieldmap.contains("Range")) + { + float min = 0; + float max = 0; + //Some range fields list "0-10" and some list "0 10". Handle both. + if (fieldmap["Range"].split(" ").size() > 1) + { + min = fieldmap["Range"].split(" ")[0].trimmed().toFloat(); + max = fieldmap["Range"].split(" ")[1].trimmed().toFloat(); + } + else if (fieldmap["Range"].split("-").size() > 1) + { + min = fieldmap["Range"].split("-")[0].trimmed().toFloat(); + max = fieldmap["Range"].split("-")[1].trimmed().toFloat(); + } + if (tab == "Advanced") + { + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_MIN"] = min; + advset[setname + "\\" + QString::number(advarraycount) + "\\" + "QGC_PARAM_SLIDER_MAX"] = max; + } + else + { + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_MIN"] = min; + genset[setname + "\\" + QString::number(genarraycount) + "\\" + "QGC_PARAM_SLIDER_MAX"] = max; + } + } + } + if (tab == "Advanced") + { + advarraycount++; + advset["count"] = advarraycount; + } + else + { + genarraycount++; + genset["count"] = genarraycount; + } + //Right here we have a single param in memory + name; + docs; + valuemap; + fieldmap; + //standardParamConfig + if (valuemap.size() > 0) + { + QList > valuelist; + for (QMap::const_iterator i = valuemap.constBegin();i!=valuemap.constEnd();i++) + { + valuelist.append(QPair(i.key().toInt(),i.value())); + } + if (tab == "Standard") + { + standardParamConfig->addCombo(humanname,docs,name,valuelist); + } + else if (tab == "Advanced") + { + advancedParamConfig->addCombo(humanname,docs,name,valuelist); + } + } + else if (fieldmap.size() > 0) + { + float min = 0; + float max = 100; + if (fieldmap.contains("Range")) + { + float min = 0; + float max = 0; + //Some range fields list "0-10" and some list "0 10". Handle both. + if (fieldmap["Range"].split(" ").size() > 1) + { + min = fieldmap["Range"].split(" ")[0].trimmed().toFloat(); + max = fieldmap["Range"].split(" ")[1].trimmed().toFloat(); + } + else if (fieldmap["Range"].split("-").size() > 1) + { + min = fieldmap["Range"].split("-")[0].trimmed().toFloat(); + max = fieldmap["Range"].split("-")[1].trimmed().toFloat(); + } + } + if (tab == "Standard") + { + standardParamConfig->addRange(humanname,docs,name,min,max); + } + else if (tab == "Advanced") + { + advancedParamConfig->addRange(humanname,docs,name,max,min); + } + } + + } + xml.readNext(); + } + if (genarraycount > 0) + { + /* + tool = new QGCToolWidget("", this); + tool->addUAS(mav); + tool->setTitle(parametersname); + tool->setObjectName(parametersname); + tool->setSettings(genset); + QList paramlist = tool->getParamList(); + for (int i=0;iinsert(paramlist[i],tool); + } + else if (parametersname == "ArduCopter") //MAV_TYPE_QUADROTOR "QUADROTOR + { + systemTypeToParamMap["QUADROTOR"]->insert(paramlist[i],tool); + } + else if (parametersname == "APMrover2") //MAV_TYPE_GROUND_ROVER GROUND_ROVER + { + systemTypeToParamMap["GROUND_ROVER"]->insert(paramlist[i],tool); + } + else + { + libParamToWidgetMap->insert(paramlist[i],tool); + } + } + + toolWidgets.append(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + if (valuetype == "vehicles") + { + ui->leftGeneralLayout->addWidget(box); + } + else if (valuetype == "libraries") + { + ui->rightGeneralLayout->addWidget(box); + } + box->hide(); + toolToBoxMap[tool] = box;*/ + } + if (advarraycount > 0) + { + /* + tool = new QGCToolWidget("", this); + tool->addUAS(mav); + tool->setTitle(parametersname); + tool->setObjectName(parametersname); + tool->setSettings(advset); + QList paramlist = tool->getParamList(); + for (int i=0;iinsert(paramlist[i],tool); + } + else if (parametersname == "ArduCopter") //MAV_TYPE_QUADROTOR "QUADROTOR + { + systemTypeToParamMap["QUADROTOR"]->insert(paramlist[i],tool); + } + else if (parametersname == "APMrover2") //MAV_TYPE_GROUND_ROVER GROUND_ROVER + { + systemTypeToParamMap["GROUND_ROVER"]->insert(paramlist[i],tool); + } + else + { + libParamToWidgetMap->insert(paramlist[i],tool); + } + } + + toolWidgets.append(tool); + QGroupBox *box = new QGroupBox(this); + box->setTitle(tool->objectName()); + box->setLayout(new QVBoxLayout()); + box->layout()->addWidget(tool); + if (valuetype == "vehicles") + { + ui->leftAdvancedLayout->addWidget(box); + } + else if (valuetype == "libraries") + { + ui->rightAdvancedLayout->addWidget(box); + } + box->hide(); + toolToBoxMap[tool] = box;*/ + } + + + + + } + xml.readNext(); + } + + } + + xml.readNext(); + } + } + xml.readNext(); + } + } diff --git a/src/ui/configuration/ApmSoftwareConfig.ui b/src/ui/configuration/ApmSoftwareConfig.ui index ab26e10fbeb7300b9df4d0b5953647efd832a459..e6fc845632bd40d7d62e3bfaaefb6cd8f0b9f691 100644 --- a/src/ui/configuration/ApmSoftwareConfig.ui +++ b/src/ui/configuration/ApmSoftwareConfig.ui @@ -6,221 +6,210 @@ 0 0 - 718 - 531 + 853 + 619 Form - - - - 20 - 10 - 175 - 531 - - - - - 175 - 0 - - - - - 175 - 16777215 - - - - true - - - - - 0 - 0 - 173 - 529 - - - - - - - QLayout::SetMinAndMaxSize - + + + + + + 175 + 0 + + + + + 175 + 16777215 + + + + true + + + + + 0 + 0 + 173 + 599 + + + - - - - 100 - 35 - - - - APM Planner 2.0 Config - - - - - - - - 0 - 35 - - - - Basic Pids - - - false - - - - - - - - 0 - 35 - - - - Flight Modes - - - false - - - - - - - - 0 - 35 - - - - Standard Params - - - false - - - - - - - - 0 - 35 - - - - GeoFence - - - false - - - - - - - - 0 - 35 - - - - FailSafe - - - false - - - - - - - - 0 - 35 - - - - Advanced Params - - - false - - - - - - - - 0 - 35 - - - - Adv Parameter List - - - false - - - - - - - - 0 - 35 - - - - ArduCoper Pids - - - false - - - - - - - Qt::Vertical - - - - 20 - 40 - - - + + + QLayout::SetMinAndMaxSize + + + + + + 100 + 35 + + + + APM Planner 2.0 Config + + + + + + + + 0 + 35 + + + + Basic Pids + + + false + + + + + + + + 0 + 35 + + + + Flight Modes + + + false + + + + + + + + 0 + 35 + + + + Standard Params + + + false + + + + + + + + 0 + 35 + + + + GeoFence + + + false + + + + + + + + 0 + 35 + + + + FailSafe + + + false + + + + + + + + 0 + 35 + + + + Advanced Params + + + false + + + + + + + + 0 + 35 + + + + Adv Parameter List + + + false + + + + + + + + 0 + 35 + + + + ArduCoper Pids + + + false + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + - - - - - - - - 220 - 20 - 471 - 491 - - - + + + + + + + diff --git a/src/ui/configuration/StandardParamConfig.cc b/src/ui/configuration/StandardParamConfig.cc index d67891bbfb94e65133b36df0d59b237e0e2951e8..0be1d02f225d64f954a4e0f23805c2fa7cdfd7fe 100644 --- a/src/ui/configuration/StandardParamConfig.cc +++ b/src/ui/configuration/StandardParamConfig.cc @@ -1,11 +1,40 @@ #include "StandardParamConfig.h" +#include "ParamWidget.h" +StandardParamConfig::StandardParamConfig(QWidget *parent) : AP2ConfigWidget(parent) +{ + ui.setupUi(this); +} +StandardParamConfig::~StandardParamConfig() +{ +} -StandardParamConfig::StandardParamConfig(QWidget *parent) : QWidget(parent) +void StandardParamConfig::activeUASSet(UASInterface *uas) { - ui.setupUi(this); + + AP2ConfigWidget::activeUASSet(uas); +} +void StandardParamConfig::addRange(QString title,QString description,QString param,double min,double max) +{ + ParamWidget *widget = new ParamWidget(ui.scrollAreaWidgetContents); + paramToWidgetMap[param] = widget; + widget->setupDouble(title + "(" + param + ")",description,0,min,max); + ui.verticalLayout->addWidget(widget); + widget->show(); } -StandardParamConfig::~StandardParamConfig() +void StandardParamConfig::addCombo(QString title,QString description,QString param,QList > valuelist) +{ + ParamWidget *widget = new ParamWidget(ui.scrollAreaWidgetContents); + paramToWidgetMap[param] = widget; + widget->setupCombo(title + "(" + param + ")",description,valuelist); + ui.verticalLayout->addWidget(widget); + widget->show(); +} +void StandardParamConfig::parameterChanged(int uas, int component, QString parameterName, QVariant value) { + if (paramToWidgetMap.contains(parameterName)) + { + paramToWidgetMap[parameterName]->setValue(value.toDouble()); + } } diff --git a/src/ui/configuration/StandardParamConfig.h b/src/ui/configuration/StandardParamConfig.h index 9e43a9bd99ffa222f3c27100871bb290b4dcb787..d337b9b4f226c5a5a18d694dc3fe3b16ce916fd1 100644 --- a/src/ui/configuration/StandardParamConfig.h +++ b/src/ui/configuration/StandardParamConfig.h @@ -3,16 +3,22 @@ #include #include "ui_StandardParamConfig.h" - -class StandardParamConfig : public QWidget +#include "AP2ConfigWidget.h" +#include "ParamWidget.h" +class StandardParamConfig : public AP2ConfigWidget { Q_OBJECT public: explicit StandardParamConfig(QWidget *parent = 0); ~StandardParamConfig(); - + void addRange(QString title,QString description,QString param,double min,double max); + void addCombo(QString title,QString description,QString param,QList > valuelist); +private slots: + void parameterChanged(int uas, int component, QString parameterName, QVariant value); private: + QMap paramToWidgetMap; + void activeUASSet(UASInterface *uas); Ui::StandardParamConfig ui; }; diff --git a/src/ui/configuration/StandardParamConfig.ui b/src/ui/configuration/StandardParamConfig.ui index cdbb320c0e634be0615dfc81d06172c2e813840e..53a96d984792d7aa6198efe9bfb7f3864b57c523 100644 --- a/src/ui/configuration/StandardParamConfig.ui +++ b/src/ui/configuration/StandardParamConfig.ui @@ -6,26 +6,44 @@ 0 0 - 400 - 300 + 651 + 552 Form - - - - 20 - 20 - 201 - 41 - - - - <h2>Standard Params</h2> - - + + + + + <h2>Standard Params</h2> + + + + + + + true + + + + + 0 + 0 + 631 + 505 + + + + + + + + + + +