@@ -925,6 +925,40 @@ class MainWindow(QMainWindow, MainWindow.Ui_MainWindow):
925925 self .update_label_AutoSaveFolder ()
926926 return
927927
928+ @pyqtSlot ()
929+ def on_SaveSpectrumBtn_clicked (self ):
930+ ''' Save most recent spectrum (used for Single Mode) '''
931+ if self .check_Scope ():
932+ QMessageBox .critical (self , "Single Int" , "First record a Single Scope spectrum" )
933+ return
934+
935+ if (self .AbsorbanceModeBtn .isChecked ()):
936+ if self .check_Abs ():
937+ QMessageBox .critical (self , "Single Abs" , "First record a Single Abs spectrum" )
938+ return
939+
940+ filepath , _ = QFileDialog .getSaveFileName (self , "Save Single Spectrum" , "" , "CSV Files (*.csv)" )
941+ if filepath :
942+
943+ self .single_save (filepath , "Int" , globals .ScopeSpectrum , "Intensity" )
944+ self .single_save (filepath , "Int_DarkCorr" , globals .ScopeSpectrum_DarkCorr , "Intensity (Dark-Corrected)" )
945+ self .single_save (filepath , "Int_DarkSLSCorr" , globals .ScopeSpectrum_DarkSLSCorr , "Intensity (Dark- and SLS-Corrected)" )
946+
947+ if (self .AbsorbanceModeBtn .isChecked ()): ## Absorbance mode
948+ if globals .Corrections_to_Apply == "DarkSLS" :
949+ self .single_save (filepath , "Abs" , globals .AbsSpectrum , "Absorbance" )
950+ elif globals .Corrections_to_Apply == "Dark" :
951+ self .single_save (filepath , "Abs_noSLS" , globals .AbsSpectrum , "Absorbance (No SLS Correction)" )
952+ elif globals .Corrections_to_Apply == "None" : ## no corrections
953+ self .single_save (filepath , "Abs_noDarkSLScorr" , globals .AbsSpectrum , "Absorbance (No Dark and SLS Corrections)" )
954+ #####################################
955+
956+ def single_save (self , filepath , mode , spectrum , data_header ):
957+ filepath_full = DataHandling .append_filepath (filepath , mode )
958+ file = DataHandling .Logger (filepath_full , "spectra" ) ## initialise logger for spectrum savefile
959+ file .save_spectrum (globals .wavelength , spectrum , data_header )
960+ self .statusBar .showMessage (f"Single spectrum saved as { file .filename } " )
961+
928962 @pyqtSlot ()
929963 def auto_save (self , foldername , mode , spectrum , data_header ):
930964 '''
@@ -1409,21 +1443,25 @@ class MainWindow(QMainWindow, MainWindow.Ui_MainWindow):
14091443 self .label_NrCyclesEdt .setEnabled (False )
14101444 self .IntervalEdt .setEnabled (False )
14111445 self .label_IntervalEdt .setEnabled (False )
1446+ self .ChkAutoSaveFolder .setChecked (False ) ## auto-save off for Single Mode
14121447 if self .ContinuousRBtn .isChecked ():
14131448 self .NrCyclesEdt .setEnabled (True )
14141449 self .label_NrCyclesEdt .setEnabled (True )
14151450 self .IntervalEdt .setEnabled (False )
14161451 self .label_IntervalEdt .setEnabled (False )
1452+ self .ChkAutoSaveFolder .setChecked (True ) ## auto-save on
14171453 if self .KineticsRBtn .isChecked ():
14181454 self .NrCyclesEdt .setEnabled (True )
14191455 self .label_NrCyclesEdt .setEnabled (True )
14201456 self .IntervalEdt .setEnabled (True )
14211457 self .label_IntervalEdt .setEnabled (True )
1458+ self .ChkAutoSaveFolder .setChecked (True ) ## auto-save on
14221459 if self .IrrKinRBtn .isChecked ():
14231460 self .NrCyclesEdt .setEnabled (True )
14241461 self .label_NrCyclesEdt .setEnabled (True )
14251462 self .IntervalEdt .setEnabled (True )
14261463 self .label_IntervalEdt .setEnabled (True )
1464+ self .ChkAutoSaveFolder .setChecked (True ) ## auto-save on
14271465
14281466 if self .ScopeModeBtn .isChecked ():
14291467 globals .MeasurementMode = "Int"
@@ -1500,13 +1538,21 @@ class MainWindow(QMainWindow, MainWindow.Ui_MainWindow):
15001538 self .reset_Data_Ref ()
15011539
15021540 def check_Dark (self ):
1503- """ Check if true """
1541+ """ Returns true if Dark is zero """
15041542 return (globals .DarkSpectrum_doublearray == [0.0 ] * 4096 or globals .DarkSpectrum == [0.0 ])
15051543
15061544 def check_Ref (self ):
1507- """ check if true """
1545+ """ Returns true if Reference is zero """
15081546 return (globals .RefSpectrum_doublearray == [0.0 ] * 4096 or globals .RefSpectrum == [0.0 ])
15091547
1548+ def check_Scope (self ):
1549+ """ Returns true if Scope is zero """
1550+ return (globals .ScopeSpectrum_doublearray == [0.0 ] * 4096 or globals .ScopeSpectrum == [0.0 ])
1551+
1552+ def check_Abs (self ):
1553+ """ Returns true if Abs is zero """
1554+ return (globals .AbsSpectrum_doublearray == [0.0 ] * 4096 or globals .AbsSpectrum == [0.0 ])
1555+
15101556 def check_SLSCorr (self ):
15111557 """ check if true """
15121558 return (self .SLSCorr == "ON" )
0 commit comments