diff --git a/QtRocket.cpp b/QtRocket.cpp index 3cad722..d8c3afd 100644 --- a/QtRocket.cpp +++ b/QtRocket.cpp @@ -88,3 +88,12 @@ int QtRocket::run(int argc, char* argv[]) } return 0; } + +void QtRocket::addMotorModels(std::vector& m) +{ + for(const auto& i : m) + { + motorModels.push_back(i); + } + // TODO: Now clear any duplicates? +} diff --git a/QtRocket.h b/QtRocket.h index 0f56c6a..5d769c5 100644 --- a/QtRocket.h +++ b/QtRocket.h @@ -35,6 +35,8 @@ public: std::shared_ptr getGravityModel() { return gravity; } std::shared_ptr getAtmosphereModel() { return atmosphere; } + + void addMotorModels(std::vector& m); private: QtRocket(); diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index 6e72e3e..d238c94 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -8,7 +8,7 @@ #include "utils/RSEDatabaseLoader.h" -#include +#include #include #include @@ -112,3 +112,26 @@ void MainWindow::on_testButton2_clicked() } + +void MainWindow::on_loadRSE_button_clicked() +{ + QString rseFile = QFileDialog::getOpenFileName(this, + tr("Import RSE Database File"), + "/home", + tr("RSE Files (*.rse)")); + + utils::RSEDatabaseLoader loader(rseFile.toStdString()); + + ui->rocketPartButtons->findChild(QString("databaseFileLine"))->setText(rseFile); + + QComboBox* engineSelector = + ui->rocketPartButtons->findChild(QString("engineSelectorComboBox")); + + const std::vector& motors = loader.getMotors(); + for(const auto& motor : motors) + { + std::cout << "Adding: " << motor.commonName << std::endl; + engineSelector->addItem(QString(motor.commonName.c_str())); + } +} + diff --git a/gui/MainWindow.h b/gui/MainWindow.h index afd33a7..07bcc53 100644 --- a/gui/MainWindow.h +++ b/gui/MainWindow.h @@ -25,6 +25,8 @@ private slots: void on_testButton2_clicked(); + void on_loadRSE_button_clicked(); + private: Ui::MainWindow* ui; QtRocket* qtRocket; diff --git a/gui/MainWindow.ui b/gui/MainWindow.ui index 0e11ac8..d95e704 100644 --- a/gui/MainWindow.ui +++ b/gui/MainWindow.ui @@ -167,6 +167,35 @@ + + + + 90 + 220 + 421 + 80 + + + + + + + Load RSE Database File + + + + + + + true + + + + + + + + diff --git a/model/MotorModel.h b/model/MotorModel.h index 8f54b9c..8a201aa 100644 --- a/model/MotorModel.h +++ b/model/MotorModel.h @@ -49,6 +49,7 @@ public: struct MotorAvailability { MotorAvailability(const AVAILABILITY& a) : availability(a) {} + MotorAvailability(const MotorAvailability&) = default; MotorAvailability(MotorAvailability&&) = default; MotorAvailability() : MotorAvailability(AVAILABILITY::REGULAR) {} @@ -68,6 +69,7 @@ public: struct CertOrg { CertOrg(const CERTORG& c) : org(c) {} + CertOrg(const CertOrg&) = default; CertOrg(CertOrg&&) = default; CertOrg() : CertOrg(CERTORG::UNC) {} @@ -95,6 +97,7 @@ public: struct MotorType { MotorType(const MOTORTYPE& t) : type(t) {} + MotorType(const MotorType&) = default; MotorType(MotorType&&) = default; MotorType() : MotorType(MOTORTYPE::SU) {} diff --git a/utils/RSEDatabaseLoader.cpp b/utils/RSEDatabaseLoader.cpp index 696a539..133151c 100644 --- a/utils/RSEDatabaseLoader.cpp +++ b/utils/RSEDatabaseLoader.cpp @@ -5,6 +5,8 @@ #include #include +#include "QtRocket.h" + namespace utils { RSEDatabaseLoader::RSEDatabaseLoader(const std::string& filename) @@ -19,6 +21,7 @@ RSEDatabaseLoader::RSEDatabaseLoader(const std::string& filename) buildAndAppendMotorModel(v.second); } + QtRocket::getInstance()->addMotorModels(motors); } RSEDatabaseLoader::~RSEDatabaseLoader() @@ -81,15 +84,17 @@ void RSEDatabaseLoader::buildAndAppendMotorModel(boost::property_tree::ptree& v) double fdata = w.second.get(".f"); thrustData.push_back(std::make_pair(tdata, fdata)); } + /* std::cout << "\n--------------------------------------------\n"; std::cout << "name: " << mm.commonName << std::endl; + std::cout << "impulseClass: " << mm.impulseClass << std::endl; std::cout << "length: " << mm.length << std::endl; std::cout << "manufacturer: " << mm.manufacturer << std::endl; std::cout << "maxThrust: " << mm.maxThrust << std::endl; std::cout << "propWeight: " << mm.propWeight << std::endl; std::cout << "totalImpulse: " << mm.totalImpulse << std::endl; std::cout << "--------------------------------------------\n"; - /* + std::cout << "thrust data:\n"; for(const auto& i : thrustData) { diff --git a/utils/RSEDatabaseLoader.h b/utils/RSEDatabaseLoader.h index 19be9c7..257db33 100644 --- a/utils/RSEDatabaseLoader.h +++ b/utils/RSEDatabaseLoader.h @@ -16,6 +16,7 @@ public: RSEDatabaseLoader(const std::string& filename); ~RSEDatabaseLoader(); + const std::vector& getMotors() const { return motors; } private: std::vector motors;