diff --git a/gui/SimOptionsWindow.cpp b/gui/SimOptionsWindow.cpp index 3342b03..49fa931 100644 --- a/gui/SimOptionsWindow.cpp +++ b/gui/SimOptionsWindow.cpp @@ -1,14 +1,65 @@ + +/// \cond +// C headers +// C++ headers +#include +// 3rd party headers +/// \endcond + +// qtrocket headers +#include "QtRocket.h" #include "SimOptionsWindow.h" #include "ui_SimOptionsWindow.h" +#include "sim/SimulationOptions.h" + SimOptionsWindow::SimOptionsWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::SimOptionsWindow) { ui->setupUi(this); + + // populate the combo boxes + QtRocket* qtrocket = QtRocket::getInstance(); + + std::shared_ptr options(new sim::SimulationOptions); + std::vector atmosphereModels = options->getAvailableAtmosphereModels(); + std::vector gravityModels = options->getAvailableGravityModels(); + + for(const auto& i : atmosphereModels) + { + ui->atmosphereModelCombo->addItem(QString::fromStdString(i)); + } + for(const auto& i : gravityModels) + { + ui->gravityModelCombo->addItem(QString::fromStdString(i)); + } } SimOptionsWindow::~SimOptionsWindow() { delete ui; } + +void SimOptionsWindow::on_buttonBox_rejected() +{ + this->close(); +} + + +void SimOptionsWindow::on_buttonBox_accepted() +{ + QtRocket* qtrocket = QtRocket::getInstance(); + + std::shared_ptr options(new sim::SimulationOptions); + + options->setTimeStep(ui->timeStep->text().toDouble()); + options->setGravityModel(ui->gravityModelCombo->currentText().toStdString()); + options->setAtmosphereModel(ui->atmosphereModelCombo->currentText().toStdString()); + qtrocket->setSimulationOptions(options); + + this->close(); + + +} + diff --git a/gui/SimOptionsWindow.h b/gui/SimOptionsWindow.h index 9d160b1..203b918 100644 --- a/gui/SimOptionsWindow.h +++ b/gui/SimOptionsWindow.h @@ -15,6 +15,11 @@ public: explicit SimOptionsWindow(QWidget *parent = nullptr); ~SimOptionsWindow(); +private slots: + void on_buttonBox_rejected(); + + void on_buttonBox_accepted(); + private: Ui::SimOptionsWindow *ui; }; diff --git a/gui/SimOptionsWindow.ui b/gui/SimOptionsWindow.ui index 1cbe0ce..eec5505 100644 --- a/gui/SimOptionsWindow.ui +++ b/gui/SimOptionsWindow.ui @@ -26,7 +26,7 @@ 60 20 261 - 131 + 156 diff --git a/sim/SimulationOptions.h b/sim/SimulationOptions.h index 68cba03..6b3db27 100644 --- a/sim/SimulationOptions.h +++ b/sim/SimulationOptions.h @@ -4,6 +4,7 @@ /// \cond // C headers // C++ headers +#include #include #include #include @@ -32,9 +33,9 @@ class SimulationOptions public: SimulationOptions() { - setTimeStep(0.01); - setGravityModel("Constant Gravity"); - setAtmosphereModel("Constant Atmosphere"); + //setTimeStep(0.01); + //setGravityModel("Constant Gravity"); + //setAtmosphereModel("Constant Atmosphere"); } ~SimulationOptions() = default; SimulationOptions(const SimulationOptions&) = delete; @@ -42,6 +43,22 @@ public: SimulationOptions& operator=(const SimulationOptions&) = delete; SimulationOptions& operator=(SimulationOptions&&) = delete; + std::vector getAvailableGravityModels() + { + std::vector retVal(gravityModels.size()); + std::transform(gravityModels.begin(), gravityModels.end(), std::back_inserter(retVal), + [](auto& i) { return i.first; }); + return retVal; + } + + std::vector getAvailableAtmosphereModels() + { + std::vector retVal(atmosphereModels.size()); + std::transform(atmosphereModels.begin(), atmosphereModels.end(), std::back_inserter(retVal), + [](auto& i) { return i.first; }); + return retVal; + } + void setTimeStep(double t) { timeStep = t; } void setGravityModel(const std::string& model) {