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 "SimOptionsWindow.h"
#include "ui_SimOptionsWindow.h" #include "ui_SimOptionsWindow.h"
#include "sim/SimulationOptions.h"
SimOptionsWindow::SimOptionsWindow(QWidget *parent) : SimOptionsWindow::SimOptionsWindow(QWidget *parent) :
QMainWindow(parent), QMainWindow(parent),
ui(new Ui::SimOptionsWindow) ui(new Ui::SimOptionsWindow)
{ {
ui->setupUi(this); 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() SimOptionsWindow::~SimOptionsWindow()
{ {
delete ui; 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); explicit SimOptionsWindow(QWidget *parent = nullptr);
~SimOptionsWindow(); ~SimOptionsWindow();
private slots:
void on_buttonBox_rejected();
void on_buttonBox_accepted();
private: private:
Ui::SimOptionsWindow *ui; Ui::SimOptionsWindow *ui;
}; };

View File

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

View File

@ -4,6 +4,7 @@
/// \cond /// \cond
// C headers // C headers
// C++ headers // C++ headers
#include <algorithm>
#include <map> #include <map>
#include <memory> #include <memory>
#include <string> #include <string>
@ -32,9 +33,9 @@ class SimulationOptions
public: public:
SimulationOptions() SimulationOptions()
{ {
setTimeStep(0.01); //setTimeStep(0.01);
setGravityModel("Constant Gravity"); //setGravityModel("Constant Gravity");
setAtmosphereModel("Constant Atmosphere"); //setAtmosphereModel("Constant Atmosphere");
} }
~SimulationOptions() = default; ~SimulationOptions() = default;
SimulationOptions(const SimulationOptions&) = delete; SimulationOptions(const SimulationOptions&) = delete;
@ -42,6 +43,22 @@ public:
SimulationOptions& operator=(const SimulationOptions&) = delete; SimulationOptions& operator=(const SimulationOptions&) = delete;
SimulationOptions& operator=(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 setTimeStep(double t) { timeStep = t; }
void setGravityModel(const std::string& model) void setGravityModel(const std::string& model)
{ {