From cb62a8f333d967c5826980bdb7e748fff1835fb0 Mon Sep 17 00:00:00 2001
From: Martin Killenberg <martin.killenberg@desy.de>
Date: Fri, 3 Nov 2023 21:42:42 +0100
Subject: [PATCH] fix: introduce process to decouple GUI

---
 Python_script/climate-lab-gui.py | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/Python_script/climate-lab-gui.py b/Python_script/climate-lab-gui.py
index 2ec5fc1..849d0fe 100755
--- a/Python_script/climate-lab-gui.py
+++ b/Python_script/climate-lab-gui.py
@@ -82,6 +82,20 @@ class TestStandMainWindow(QMainWindow):
         self.stopButton.setEnabled(True)
         self.qt_app.processEvents();
 
+        p = mp.Process(target=self.do_measurement_impl)
+        p.start()
+        while p.is_alive():
+            time.sleep(0.1)
+            self.qt_app.processEvents();
+        p.join()
+        
+        self.runSettingsLayout.setEnabled(True)
+        self.startButton.setEnabled(True)
+        self.stopButton.setEnabled(False)
+
+
+    #the part that is started in a separate process
+    def do_measurement_impl(self):
         os.chdir(self.start_dir)
         with open('test_stand_parameter.json', 'r') as f:
             config_data = json.load(f)
@@ -96,7 +110,6 @@ class TestStandMainWindow(QMainWindow):
             output_basename = self.baseName.text()
 
         if not self.check_and_change_dir(config_data['data_folder'] + '/' + output_basename):
-            self.setEnabled(True)
             return
 
         meas = None
@@ -156,10 +169,6 @@ class TestStandMainWindow(QMainWindow):
             if meas is not None:
                 meas.chamber.close()
                 meas.ext_sensors.close()
-            
-            self.runSettingsLayout.setEnabled(True)
-            self.startButton.setEnabled(True)
-            self.stopButton.setEnabled(False)
 
 
 if __name__ == '__main__':
-- 
GitLab