This commit is contained in:
Travis Hunter 2023-04-25 19:11:28 -06:00
parent 696e81433e
commit 89fb6d47d0
4 changed files with 77 additions and 4 deletions

View File

@ -1,14 +1,65 @@
/// \cond
// C headers
// C++ headers
#include <memory>
// 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<sim::SimulationOptions> options(new sim::SimulationOptions);
std::vector<std::string> atmosphereModels = options->getAvailableAtmosphereModels();
std::vector<std::string> 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<sim::SimulationOptions> 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();
}

View File

@ -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;
};

View File

@ -26,7 +26,7 @@
<x>60</x>
<y>20</y>
<width>261</width>
<height>131</height>
<height>156</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">

View File

@ -4,6 +4,7 @@
/// \cond
// C headers
// C++ headers
#include <algorithm>
#include <map>
#include <memory>
#include <string>
@ -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<std::string> getAvailableGravityModels()
{
std::vector<std::string> retVal(gravityModels.size());
std::transform(gravityModels.begin(), gravityModels.end(), std::back_inserter(retVal),
[](auto& i) { return i.first; });
return retVal;
}
std::vector<std::string> getAvailableAtmosphereModels()
{
std::vector<std::string> 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)
{