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()