Source code for gui.widget_files_data

"""
This widget contains the functionality for setting
the important paths and names. The widget can
be executed as a standalone version.

########################################
Functionalities provided in this widget:
########################################

Note:
    Technically not all the functionalities are provided here, such as
    the connection to the saver class.

1.  Choose IR delay file
2.  Choose UV/VIS delay file
3.  Choose Fabry Perot file
4.  Choose save path
5.  Choose whether or not you want to save the data and save the raw data
"""
if __name__ == "__main__":
    # Add directories to path for imports
    import os, sys, inspect

    currentdir = os.path.dirname(
        os.path.abspath(inspect.getfile(inspect.currentframe()))
    )
    parentdir = os.path.dirname(currentdir)

    sys.path.insert(0, os.path.join(currentdir, "ui_files"))
    sys.path.insert(0, parentdir)

# PyQt imports
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import QFileDialog
from PyQt5.QtCore import QRunnable, QThreadPool

# Import RegEx input validators
from regex_validators import *

# Import of file made from UI designer
from ui_files_data import Ui_GroupBox_file as Ui_files_data

# Logger Settings
import logging

# logging.basicConfig(level=logging.INFO)


[docs]class WidgetFilesData(QtWidgets.QGroupBox, Ui_files_data): def __init__(self, *args, obj=None, **kwargs): super(QtWidgets.QGroupBox, self).__init__(*args, **kwargs) self.setupUi(self) # Placeholder paths self.default_ir_path = r"C:" self.default_uv_path = r"C:" self.default_fp_path = r"C:" self.default_save_path = r"C:" # Setup signals # Open Dialogs self.pushButton_file_browse_ir.clicked.connect(self.open_ir) self.pushButton_file_browse_uv.clicked.connect(self.open_uv) self.pushButton_file_browse_fp.clicked.connect(self.open_fabryperot) self.pushButton_file_browse_save.clicked.connect(self.save_data) # Interlock save and save raw data check box self.checkBox_file_save_raw.stateChanged.connect(self.turn_on_both_checkboxes) self.checkBox_file_save.stateChanged.connect(self.turn_off_both_checkboxes)
[docs] def set_default_paths(self, hw): """ Add defaults paths from hardware config file. Args: hw (object): Hardware properties object that holds all the relevant paths. """ self.default_ir_path = hw.paths.ir_delay_file self.default_uv_path = hw.paths.vis_delay_file self.default_fp_path = hw.paths.fabry_perot_file self.default_save_path = hw.paths.save_path self.lineEdit_file_ir.setText(self.default_ir_path) self.lineEdit_file_uv.setText(self.default_uv_path) self.lineEdit_file_fp.setText(self.default_fp_path) self.lineEdit_file_save_path.setText(self.default_save_path)
[docs] def open_ir(self): starting_path = self.lineEdit_file_ir.text() fileName = QFileDialog.getOpenFileName( self, "Open IR Delay File", starting_path, "Txt files (*.txt)" ) if fileName[0] != "": self.lineEdit_file_ir.setText(fileName[0])
[docs] def open_uv(self): starting_path = self.lineEdit_file_uv.text() fileName = QFileDialog.getOpenFileName( self, "Open UV VIS Delay File", starting_path, "Txt files (*.txt)" ) if fileName[0] != "": self.lineEdit_file_uv.setText(fileName[0])
[docs] def open_fabryperot(self): starting_path = self.lineEdit_file_fp.text() fileName = QFileDialog.getOpenFileName( self, "Open Fabry Perot File", starting_path, "Txt files (*.txt)" ) if fileName[0] != "": self.lineEdit_file_fp.setText(fileName[0])
[docs] def save_data(self): starting_path = self.lineEdit_file_save_path.text() pathName = QFileDialog.getExistingDirectory( self, "Open Save Path", starting_path ) if pathName != "": self.lineEdit_file_save_path.setText(pathName)
[docs] def turn_on_both_checkboxes(self): if self.checkBox_file_save_raw.isChecked(): self.checkBox_file_save.setChecked(True)
[docs] def turn_off_both_checkboxes(self): if not self.checkBox_file_save.isChecked(): self.checkBox_file_save_raw.setChecked(False)
if __name__ == "__main__": # TESTING ----------------------------------------------------------- class MainWindow(QtWidgets.QMainWindow): def __init__(self, *args, obj=None, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setWindowTitle("Please god let this work too") widget = WidgetFilesData() self.setCentralWidget(widget) app = QtWidgets.QApplication(sys.argv) window = MainWindow() window.show() app.exec()