From da044a61a94dcd770b90b33a4251a3ce7efde7d2 Mon Sep 17 00:00:00 2001
From: Raees Khan <rak177@pitt.edu>
Date: Tue, 19 Jul 2022 05:21:00 -0400
Subject: [PATCH] Fixing bug

---
 FSL/src/configregions.cpp  | 10 +++++-----
 FSL/src/configregions.h    |  4 +++-
 FSL/src/fsl_mainwindow.cpp | 16 ++++++++--------
 FSL/src/fsl_mainwindow.h   |  3 +++
 4 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/FSL/src/configregions.cpp b/FSL/src/configregions.cpp
index dfce43647..7c9bd42a5 100644
--- a/FSL/src/configregions.cpp
+++ b/FSL/src/configregions.cpp
@@ -18,7 +18,7 @@ ConfigRegions::ConfigRegions(QWidget *parent) :
     positron_cut_validator = new QDoubleValidator(-100000.0,100000.0,8);
     gamma_cut_validator = new QDoubleValidator(-100000.0,100000.0,8);
     
-    QLocale loc(QLocale::C);
+    loc= QLocale::C;
     loc.setNumberOptions(QLocale::RejectGroupSeparator);
     
     electron_cut_validator->setLocale(loc);
@@ -48,10 +48,10 @@ void ConfigRegions::add_region_config()
 
     region_name = (ui->lE_reg_name->text()).toStdString();
     frootLV_names = (ui->lE_froot->text()).toStdString();
-    electron_cut = (ui->lE_electron->text()).toDouble();
-    proton_cut = (ui->lE_proton->text()).toDouble();
-    positron_cut = (ui->lE_positron->text()).toDouble();
-    gamma_cut = (ui->lE_gamma->text()).toDouble();
+    electron_cut = loc.toDouble(ui->lE_electron->text(), &loc_bool);
+    proton_cut = loc.toDouble(ui->lE_proton->text(), &loc_bool);
+    positron_cut = loc.toDouble(ui->lE_positron->text(), &loc_bool);
+    gamma_cut = loc.toDouble(ui->lE_gamma->text(), &loc_bool);
 
 
 
diff --git a/FSL/src/configregions.h b/FSL/src/configregions.h
index 860f0d40d..76ca0b6a3 100644
--- a/FSL/src/configregions.h
+++ b/FSL/src/configregions.h
@@ -3,7 +3,7 @@
 
 #include <QDialog>
 #include <QDoubleValidator>
-
+#include <QLocale>
 
 namespace Ui {
 class ConfigRegions;
@@ -23,6 +23,8 @@ public:
     double positron_cut;
     double gamma_cut;
     void add_region_config();
+    QLocale loc;
+    bool loc_bool;
 
 signals:
     void send_config(std::string  region_name, std::string frootLV_names
diff --git a/FSL/src/fsl_mainwindow.cpp b/FSL/src/fsl_mainwindow.cpp
index 84d39e434..6712eb0ee 100644
--- a/FSL/src/fsl_mainwindow.cpp
+++ b/FSL/src/fsl_mainwindow.cpp
@@ -129,7 +129,7 @@ FSLMainWindow::FSLMainWindow(QWidget *parent)
     p_z_validator = new QDoubleValidator(-100000.0,100000.0,8);
     mag_field_validator = new QDoubleValidator(-100000.0,100000.0,8);
     
-    QLocale lo(QLocale::C);
+    lo = QLocale::C;
     lo.setNumberOptions(QLocale::RejectGroupSeparator);
     
     p_x_validator->setLocale(lo);
@@ -420,10 +420,10 @@ void FSLMainWindow::configure_regions()
         std::vector<std::string> froot_names = this->parse_froot_string(((ui->regions_table->model()
                                                                           ->index(row,1)).data().toString()).toStdString());
 
-        double ele_cut = (ui->regions_table->model()->index(row,2)).data().toDouble();
-        double prot_cut = (ui->regions_table->model()->index(row,3)).data().toDouble();
-        double posit_cut = (ui->regions_table->model()->index(row,4)).data().toDouble();
-        double gam_cut = (ui->regions_table->model()->index(row,5)).data().toDouble();
+        double ele_cut = lo.toDouble((ui->regions_table->model()->index(row,2)).data().toString(), &locale_bool);
+        double prot_cut = lo.toDouble((ui->regions_table->model()->index(row,3)).data().toString(), &locale_bool);
+        double posit_cut = lo.toDouble((ui->regions_table->model()->index(row,4)).data().toString(), &locale_bool);
+        double gam_cut = lo.toDouble((ui->regions_table->model()->index(row,5)).data().toString(), &locale_bool);
 
         Region region_from_list = {reg_name, froot_names, ele_cut,prot_cut,posit_cut,gam_cut};
         regions.push_back(region_from_list);
@@ -688,9 +688,9 @@ void FSLMainWindow::assign_magnetic_field_map()
 //Function to configure particle energy and direction
 void FSLMainWindow::configure_energy_direction()
 {
-    p_x = ui->lE_px->text().toDouble();
-    p_y = ui->lE_py->text().toDouble();
-    p_z = ui->lE_pz->text().toDouble();
+    p_x = lo.toDouble(ui->lE_px->text(), &locale_bool);
+    p_y = lo.toDouble(ui->lE_py->text(), &locale_bool);
+    p_z = lo.toDouble(ui->lE_pz->text(), &locale_bool);
     double p = sqrt(pow(p_x,2)+pow(p_y,2)+pow(p_z,2));
 
     x_dir = std::to_string(p_x/p);
diff --git a/FSL/src/fsl_mainwindow.h b/FSL/src/fsl_mainwindow.h
index cc0b284ef..3b12f85b7 100644
--- a/FSL/src/fsl_mainwindow.h
+++ b/FSL/src/fsl_mainwindow.h
@@ -5,6 +5,7 @@
 #include <nlohmann/json.hpp>
 #include <QStringListModel>
 #include <QProcess>
+#include <QLocale>
 #include <QStandardItemModel>
 #include <QDoubleValidator>
 #include "configregions.h"
@@ -52,6 +53,8 @@ public:
 
 
     //Parameters associated with the main tab
+    QLocale lo;
+    bool locale_bool;
     nlohmann::json j;
     QProcess fullSimLight_process;
     QProcess gmex_process;
-- 
GitLab