This commit is contained in:
2022-10-06 08:26:50 +02:00
parent fcf37b60c8
commit a332aecd87
3 changed files with 186 additions and 93 deletions

84
base.py
View File

@@ -101,32 +101,53 @@ class BaseWindow(QMainWindow):
time_in_seconds=self.time_in_seconds,
reanalysis_time_in_seconds=self.reanalysis_time)
print("date_str", date_str, flush=True)
#print("date_str", date_str, flush=True)
write_message_fired = False
for i, (nfig, name) in enumerate(
zip(self.settings.data["GUI"]["resultsSeq"],
self.settings.data["GUI"]["subResultsTabTitle"])):
canvas = 'Canvas {0}'.format(i+1)
name_base = name.replace(' ', '_').lower()
for idx in range(0, nfig):
if self.all_data['Figure data'][canvas] is not None:
nfig_canvas = len(self.all_data['Figure data'][canvas])
nfig_canvas = min(nfig_canvas, nfig)
else:
nfig_canvas = nfig
for idx in range(0, nfig_canvas):
if self.all_data['Figure data'][canvas] is not None:
name = name_base + "_{0}".format(
idx) if idx > 0 else name_base
save_dest = (folder_name + date_str + '_' + name +
'.png')
print("idx", i, save_dest, flush=True)
if not os.path.exists(save_dest):
if self.all_data['Figure data'][canvas][
idx] is not None:
self.all_data['Figure data'][canvas][
idx].savefig(save_dest)
_dirname = os.path.dirname(save_dest)
if os.access(_dirname, os.W_OK):
self.all_data['Figure data'][canvas][
idx].savefig(save_dest)
elif not write_message_fired:
_mess = ("Do not have write permission " +
"for directory {0} from this " +
"host {1}. Images not saved and " +
"cannot be sent to elog").format(
_dirname, os.uname()[1])
self.parent.trigger_log_message.emit(
MsgSeverity.WARN.name, _pymodule,
_line(), _mess, {})
write_message_fired = True
attach_files.append(save_dest)
if attach_files:
self.parent.attach_files = attach_files
print("All files attached")
print("All files attached", flush=True)
else:
print("No files to attach", flush=True)
time.sleep(0.2) #avoid race condition
@@ -276,12 +297,15 @@ class BaseWindow(QMainWindow):
def run(self):
"""Run thread
"""
all_dict = self.analysis_procedure.measure_and_analyze(
self.input_parameters)
# Emit results
if all_dict is not None:
if all_dict:
self.trigger_thread_event.emit(all_dict)
mess = "Analysis completed"
self.parent.trigger_log_message.emit(
MsgSeverity.INFO.name, _pymodule, _line(), mess, {})
@@ -313,6 +337,9 @@ class BaseWindow(QMainWindow):
print("User: {0} Host: {1}".format(os.getlogin(), os.uname()[1]))
print("=============================================", flush=True)
self.settings = ReadJSON(self.appname)
self.cafe = PyCafe.CyCafe()
self.cyca = PyCafe.CyCa()
self.cafe_exception = PyCafe.CafeException
@@ -332,7 +359,7 @@ class BaseWindow(QMainWindow):
self.hdf_dialog = None
self.daq_analysis_completed = False
self.hdf_save_completed = False
self.setObjectName("MainWindow")
self.setWindowTitle(self.appname)
@@ -343,8 +370,7 @@ class BaseWindow(QMainWindow):
self.menu = self.menuBar()
self.settings = ReadJSON(self.appname)
'''
try:
dirname = self.settings.data["stdout"]["destination"]
@@ -382,13 +408,16 @@ class BaseWindow(QMainWindow):
self.autopost_epics = self.settings.data["menuFlags"]["hasEpics"]
except KeyError as error:
print("KeyError in base.py, init:", error)
self.autopost_epics = True
self.autopost_epics = False
try:
self.autopost_hdf = self.settings.data["menuFlags"]["hasH5"]
except KeyError as error:
print("KeyError in base.py, init:", error)
self.autopost_hdf = True
self.autopost_hdf = False
self.hdf_save_completed = False if self.autopost_hdf else True
self.all_input_parameters = {} #gui
self.all_input_labels = {} #gui
@@ -473,8 +502,9 @@ class BaseWindow(QMainWindow):
self.gui_frame = GUIFrame(self, has_optics=self.has_optics)
self.show_log_message = self.gui_frame.show_log_message
self.hdf_dock_widget = QNoDockWidget(" HDF5", self)
self.init_hdf_analysis_wgt()
if self.autopost_hdf:
self.hdf_dock_widget = QNoDockWidget(" HDF5", self)
self.init_hdf_analysis_wgt()
self.mainwindow_layout.addWidget(self.gui_frame.central_tab_widget)
self.mainwindow.setLayout(self.mainwindow_layout)
@@ -1613,7 +1643,7 @@ class BaseWindow(QMainWindow):
@Slot()
def start_analysis_thread(self):
if not self.analysis_procedure:
mess = "Analysis thread not configured for this application"
self.show_log_message(MsgSeverity.ERROR, _pymodule, _line(), mess)
@@ -1636,17 +1666,17 @@ class BaseWindow(QMainWindow):
if not self.verify_analysis_preconditions():
return
self.analysis_thread = self.AnalysisThread(
self, self.analysis_procedure, self.input_parameters)
self.analysis_thread.trigger_thread_event.connect(
self.receive_analysis_results)
self.analysis_thread.started.connect(self.analysis_thread_started)
self.analysis_thread.finished.connect(self.analysis_thread_finished)
#getMachineDatafor hdf
self.analysis_thread.start()
QApplication.processEvents()
@@ -1686,9 +1716,10 @@ class BaseWindow(QMainWindow):
@Slot(dict)
def receive_analysis_results(self, all_dict):
#print("receive analysis results", all_dict)
print("receive analysis results===>")
self.all_data = all_dict
self.gui_frame.canvas_update(all_dict['Figure data'])
print("here")
self.gui_frame.central_tab_widget.setCurrentIndex(1)
self.gui_frame.results_tab_wgt.setCurrentIndex(0)
@@ -1696,7 +1727,7 @@ class BaseWindow(QMainWindow):
def receive_abort_analysis(self):
"""Instantiate action on abort
"""
print("Aborting")
print("Aborting", flush=True)
if self.analysis_procedure.abort:
return
self.gui_frame.in_abort_procedure()
@@ -1719,6 +1750,12 @@ class BaseWindow(QMainWindow):
message="Measurement in progress..."):
'''Receives update of message'''
self.progressbar.setVisible(True)
try:
if self.input_parameters["simulation"] :
self.progressbar_color = self.progressbar_simulation
except KeyError:
pass
if value == PROGRESS_BAR_THREAD_INIT:
self.progressbar.setVisible(False)
self.progressbar.setFormat("")
@@ -1738,6 +1775,8 @@ class BaseWindow(QMainWindow):
prog_val = re.findall(r'\d+', message)
if prog_val:
self.progressbar.setValue(int(prog_val[0]))
else:
self.progressbar.setValue(int(10))
mess = "Aborting measurement procedure"
self.show_log_message(
MsgSeverity.WARN.name, _pymodule, _line(), mess)
@@ -1764,7 +1803,8 @@ class BaseWindow(QMainWindow):
self.progressbar.setValue(value)
self.progressbar.setObjectName(self.progressbar_color)
self.daq_analysis_completed = True
self.hdf_save_completed = False
if self.autopost_hdf:
self.hdf_save_completed = False
QTimer.singleShot(2000, lambda: self.progressbar.setVisible(False))
else:
self.progressbar.setFormat(message)
@@ -1774,7 +1814,7 @@ class BaseWindow(QMainWindow):
self.progressbar.style().polish(self.progressbar)
QApplication.processEvents()
time.sleep(0.0001)
def initialize_application(self, appname=_appname, delay=None,
facility=Facility.SwissFEL):

View File

@@ -24,8 +24,8 @@ from pyqtacc.bdbase.enumkind import Facility, MsgSeverity, UserMode
_pymodule = os.path.basename(__file__)
_appversion = "1.0.0"
INPUT_PARAMETERS_HEIGHT = 600
EXPERT_PARAMETERS_HEIGHT = 600
INPUT_PARAMETERS_HEIGHT = 200
EXPERT_PARAMETERS_HEIGHT = 200
def _line():
@@ -81,7 +81,7 @@ class GUIFrame(QWidget):
self.phase_stacked_widget = None
self.table_tab_wgt = None
self.radiobutton = None
self.multiple_figure_dict = None
self.line_sender_dict = {}
@@ -104,7 +104,7 @@ class GUIFrame(QWidget):
self.measurement_layout.setAlignment(Qt.AlignLeft | Qt.AlignTop)
self.measurement_layout.setSpacing(50)
self.measurement_tab_wgt = QTabWidget(self.measurement_wgt)
self.measurement_tab_wgt.setFixedWidth(480)
self.measurement_tab_wgt.setMinimumWidth(480)
self.operator_wgt = QWidget(self.measurement_tab_wgt)
self.expert_wgt = QWidget(self.measurement_tab_wgt)
@@ -113,20 +113,6 @@ class GUIFrame(QWidget):
self.results_layout = QHBoxLayout(self.results_wgt)
self.results_tab_wgt = QTabWidget(self.results_wgt)
self.results_tab_wgt_titles = self.settings.data[
"GUI"]["subResultsTabTitle"]
self.sub_results_wgt = [None] * len(self.results_tab_wgt_titles)
self.sub_results_layout = [None] * len(self.results_tab_wgt_titles)
for i in range(0, len(self.results_tab_wgt_titles)):
self.sub_results_wgt[i] = QWidget(self.results_tab_wgt)
self.canvas = [None] * len(self.results_tab_wgt_titles)
self.nav = [None] * len(self.results_tab_wgt_titles)
self.arrow_button_widget = [None] * len(self.results_tab_wgt_titles)
self.canvas_current_idx = [0] * len(self.results_tab_wgt_titles)
self.canvas_fig_dict = {}
self.left_arrow_dict = {}
@@ -138,15 +124,32 @@ class GUIFrame(QWidget):
self.start_wgt_text = "Start"
self.save_all_wgt = QWidget()
self.slice_orientation = "vertical" #horizontal/vertical for SATMA02
if "GUI" in self.settings.data:
self.results_tab_wgt_titles = self.settings.data[
"GUI"]["subResultsTabTitle"]
self.sub_results_wgt = [None] * len(self.results_tab_wgt_titles)
self.sub_results_layout = [None] * len(self.results_tab_wgt_titles)
for i in range(0, len(self.results_tab_wgt_titles)):
self.sub_results_wgt[i] = QWidget(self.results_tab_wgt)
self.canvas = [None] * len(self.results_tab_wgt_titles)
self.nav = [None] * len(self.results_tab_wgt_titles)
self.arrow_button_widget = [None] * len(self.results_tab_wgt_titles)
self.canvas_current_idx = [0] * len(self.results_tab_wgt_titles)
self.init_results_tab_wgt()
self.slice_orientation = "vertical" #horizontal/vertical for SATMA02
self.init_measurement_tab_wgt()
self.init_results_tab_wgt()
self.log_wgt = QMessageWidget()
self.log_layout = QVBoxLayout(self.log_wgt)
self.show_log_message(MsgSeverity.INFO, _pymodule, _line(),
"Application started")
#self.show_log_message(MsgSeverity.INFO, _pymodule, _line(),
# "Application started")
self.input_wgt_grid = QGridLayout()
self.input_wgt_grid.setHorizontalSpacing(0)
@@ -164,8 +167,9 @@ class GUIFrame(QWidget):
"""
self.central_tab_widget.setFont(self.font_gui)
self.central_tab_widget.addTab(self.measurement_wgt, "Measurement")
self.central_tab_widget.addTab(
self.results_wgt, self.settings.data["GUI"]["resultsTabTitle"])
if "GUI" in self.settings.data:
self.central_tab_widget.addTab(
self.results_wgt, self.settings.data["GUI"]["resultsTabTitle"])
self.central_tab_widget.addTab(self.log_wgt, "Log")
def init_measurement_tab_wgt(self):
@@ -240,7 +244,7 @@ class GUIFrame(QWidget):
hbox.setSpacing(5)
hbox.setAlignment(Qt.AlignTop | Qt.AlignHCenter)
group_box.setMaximumWidth(208)
group_box.setMaximumHeight(220)
group_box.setMinimumHeight(196)
group_box.setFont(self.font_gui)
group_box.setAlignment(Qt.AlignTop | Qt.AlignHCenter)
group_box.setLayout(hbox)
@@ -565,6 +569,7 @@ class GUIFrame(QWidget):
self.abort_wgt.setEnabled(False)
self.start_wgt.setEnabled(False)
self.start_wgt.setText("Aborting...")
def reset_procedure(self):
self.abort_wgt.setVisible(False)
@@ -754,6 +759,8 @@ class GUIFrame(QWidget):
checkbox.stateChanged.connect(on_change)
checked_value = Qt.Unchecked
if "Expert" not in self.settings.data:
return widget
#if key in self.parent.input_parameters.keys():
if key in self.settings.data["Expert"].keys():
if "data" in self.settings.data["Expert"][key].keys():
@@ -925,18 +932,23 @@ class GUIFrame(QWidget):
def canvas_update(self, fig_data, idx=0):
#place figures in a list
self.parent.clear_screenshot()
self.parent.clear_screenshot()
self.multiple_figure_dict = fig_data
for i, key in enumerate(self.multiple_figure_dict.keys()):
self.canvas_fig_dict[i] = key
for i, (canvas, nav, wgt, layout, key) in enumerate(
zip(self.canvas, self.nav,
self.sub_results_wgt,
self.sub_results_layout,
self.multiple_figure_dict.keys())):
if canvas is not None:
layout.removeWidget(canvas)
@@ -945,10 +957,13 @@ class GUIFrame(QWidget):
nav.deleteLater()
if self.multiple_figure_dict[key]: #'Figure 1']:
if not isinstance(self.multiple_figure_dict[key], list):
temp_list = []
temp_list.append(self.multiple_figure_dict[key])
self.multiple_figure_dict[key] = temp_list
self.canvas[i] = FigureCanvasQTAgg(
self.multiple_figure_dict[key][idx])
self.sub_results_layout[i].addWidget(self.canvas[i])
@@ -959,10 +974,10 @@ class GUIFrame(QWidget):
#self.nav[i].setContentsMargins(0, 0, 0, 0)
self.nav[i].setVisible(True)
self.nav[i].setStyleSheet("QToolBar { border: 0px }")
self.parent.add_screenshot(title=self.results_tab_wgt_titles[i],
item=wgt)
else:
self.canvas[i] = None
self.nav[i] = None
@@ -986,13 +1001,14 @@ class GUIFrame(QWidget):
stack, radiobutton_list = self.pv_selector_wgt(
title=head, key=key, pv=pv, manual_value=val)
self.stack_radiolist_dict[stack] = radiobutton_list
stack_list.append(stack)
stack.setObjectName(obj)
stack.style().polish(stack)
stacked_widget.addWidget(stack)
stacked_widget.setMaximumHeight(220)
stacked_widget.setMaximumHeight(320)
self.stacked_wgt_dict[stacked_widget] = stack_list
return stacked_widget
@@ -1043,8 +1059,11 @@ class GUIFrame(QWidget):
radiobutton_flag = [monitor, read, manual]
radiobutton_list = [None] * len(radiobutton_title)
pv_local = pv
monitor_pv = None
def cb_pv_selector(value):
value_str = radio_buddy_text_dict[self.sender()].text()
#print("cb_pv_selector", value_str)
@@ -1057,10 +1076,9 @@ class GUIFrame(QWidget):
#get groupbox from key
for k2, v2 in self.stacked_wgt_dict.items():
if k in v2:
self.current_stacked_wgt_dict[k2] = pv_local
self.current_stacked_wgt_dict[k2] = pv_local #self.sender()
#print("Current STACK FOUND")
self.radio_stack_dict[self.sender()] = value
if not value_str:
@@ -1098,6 +1116,7 @@ class GUIFrame(QWidget):
if flag:
grid.addWidget(radio, irow, 0)
if monitor:
ql = QLabel(radiobutton_title[0])
ql.setFont(self.font_pts10)
@@ -1112,16 +1131,18 @@ class GUIFrame(QWidget):
ql.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
grid.addWidget(ql, 2, 1)
def mon_cb(handle, pvname, pvdata):
monitor_pv.py_monitor_callback(handle, pvname, pvdata)
if pvname in self.current_stacked_wgt_dict.values():
if monitor_pv is not None:
monitor_pv.py_monitor_callback(handle, pvname, pvdata)
if pvname in self.current_stacked_wgt_dict.values() and \
radiobutton_list[0].isChecked(): #
self.input_parameters[key] = pvdata.value[0]
if monitor:
monitor_pv = CAQLabel(self, pv_name=pv, monitor_callback=mon_cb,
show_units=True)
monitor_pv.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
monitor_pv.setFont(self.font_pts10)
monitor_pv.setFixedHeight(self.widget_height)
@@ -1193,13 +1214,14 @@ class GUIFrame(QWidget):
ql.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
grid.addWidget(ql, 2, 3)
grid.setContentsMargins(9, 15, 9, 0)
grid.setContentsMargins(5, 10, 5, 0)
#grid.setContentsMargins(9, 15, 9, 0)
grid.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
grid.setVerticalSpacing(2)
grid.setHorizontalSpacing(4)
group_box.setContentsMargins(0, 0, 0, 0)
group_box.setMaximumWidth(280)
group_box.setMaximumHeight(260)
group_box.setMaximumHeight(320)
group_box.setFont(self.font_pts10)
group_box.setAlignment(Qt.AlignTop | Qt.AlignHCenter)
group_box.setLayout(grid)
@@ -1265,11 +1287,19 @@ class GUIFrame(QWidget):
return line
def input_wgt_qradiobutton(self, key, value, irow, wgt_grid):
def on_radiobutton_change(): #new_value):
def on_radiobutton_change(new_value):
radio_button = self.sender()
self.parent.input_parameters[key] = radio_button.target
if 'forwardLink' in self.settings.data['Parameters'][key]['data']:
link = self.settings.data['Parameters'][key]['data'][
if radio_button.isChecked():
self.parent.input_parameters[key] = radio_button.target
print("KEY================", key, self.parent.input_parameters[key], new_value)
if key in self.settings.data["Expert"].keys():
top_key = "Expert"
elif key in self.settings.data["Parameters"].keys():
top_key = "Parameters"
if 'forwardLink' in self.settings.data[top_key][key]['data']:
link = self.settings.data[top_key][key]['data'][
'forwardLink'][0]
for item in self.settings.data[link][radio_button.target]:
@@ -1277,26 +1307,28 @@ class GUIFrame(QWidget):
item]
if item in self.line_sender_dict:
if self.settings.data['Parameters'][item]['data'][
if self.settings.data[top_key][item]['data'][
'widget'] in 'QComboBox':
self.line_sender_dict[item].clear()
self.line_sender_dict[item].addItems(value_list)
self.line_sender_dict[item].setCurrentIndex(0)
self.line_sender_dict[item].currentTextChanged.emit(
value_list[0])
elif self.settings.data['Parameters'][item]['data'][
elif self.settings.data[top_key][item]['data'][
'widget'] in 'QLineEdit':
self.line_sender_dict[item].setText(str(value_list))
line = self.radio_buttons(value)
line = self.radio_buttons(key=key, options=value)
rblist = line.findChildren(QRadioButton)
for rb in rblist:
rb.toggled.connect(on_radiobutton_change)
rblist[0].setChecked(True)
rblist[0].toggled.emit(True)
wgt_grid.addWidget(line, irow, 0, 1, 4)
wgt_grid.addWidget(line, irow, 0, 1, 4, Qt.AlignLeft)
rblist[0].setChecked(True)
rblist[0].toggled.emit(True)
return line
@@ -1559,11 +1591,12 @@ class GUIFrame(QWidget):
irow=j, wgt_grid=self.input_wgt_grid)
self.operator_parameters_group.layout().addLayout(self.input_wgt_grid)
self.operator_parameters_group.setFixedHeight(INPUT_PARAMETERS_HEIGHT)
self.operator_parameters_group.setMinimumHeight(INPUT_PARAMETERS_HEIGHT)
lo = QGridLayout()
lo.setContentsMargins(9, 19, 9, 9)
lo.addWidget(self.operator_parameters_group, 0, 0, 4, 1)
lo.addWidget(self.operator_parameters_group, 0, 0, 4, 1, alignment=Qt.AlignTop)
#if random.randint(1, 10) > 9:
# lo.addWidget(self.create_analysis_wgt(), 0, 1)
#else:
@@ -1574,6 +1607,7 @@ class GUIFrame(QWidget):
row_count = 0
lo.addWidget(self.analysis_procedure_group(), row_count, 1)
#Centers input parameters group box
lo.setAlignment(Qt.AlignHCenter | Qt.AlignTop)
lo.setHorizontalSpacing(20)
@@ -1596,6 +1630,11 @@ class GUIFrame(QWidget):
#Add expert parameters to input_parameters
self.input_parameters.update(self.expert_parameters)
#Need to emit radio button here as input_parameters is overwritten by sel.expoert_parameters
#which give a list [Gasusian and FWMH]
if self.radiobutton:
self.radiobutton[0].toggled.emit(True)
if self.expert_wgt_grid:
self.expert_parameters_group.layout().addLayout(
self.expert_wgt_grid)
@@ -1644,21 +1683,23 @@ class GUIFrame(QWidget):
self.expert_parameters_group.layout().addWidget(QHLine())
self.expert_parameters_group.setFixedHeight(EXPERT_PARAMETERS_HEIGHT)
self.expert_parameters_group.setMinimumHeight(EXPERT_PARAMETERS_HEIGHT)
lo = QGridLayout()
lo.setContentsMargins(9, 19, 9, 9)
lo.addWidget(self.expert_parameters_group, 0, 0, 2, 1)
lo.addWidget(self.expert_parameters_group, 0, 0, 1, 1, alignment=Qt.AlignTop)
lo.setAlignment(Qt.AlignHCenter | Qt.AlignTop)
lo.setHorizontalSpacing(20)
self.expert_wgt.setLayout(lo)
#test
def radio_buttons(self, options: list = [], start_idx=0):
def radio_buttons(self, key="", options: list = [], start_idx=0):
widget = QWidget()
layout = QGridLayout()
layout.setContentsMargins(0, 0, 0, 0)
self.setLayout(layout)
layout.setContentsMargins(5, 0, 5, 0)
widget.setFixedWidth(220)
#self.setLayout(layout)
target_list = options
color_list = ["#894961", "teal", "darkblue"]
@@ -1669,11 +1710,18 @@ class GUIFrame(QWidget):
width_list = [70, 70, 70]
layout.addWidget(QHLine(), 0, 0, 1, 3)
layout.addWidget(QLabel("RF Tranverse Deflector"), 1, 0, 1, 3,
Qt.AlignCenter)
if key in self.settings.data["Expert"].keys():
top_key = "Expert"
elif key in self.settings.data["Parameters"].keys():
top_key = "Parameters"
_fix_width = False
_width = 1
_full_width = _width * len(options) + 1
layout.addWidget(QHLine(), 0, 0, 1, _full_width)
layout.addWidget(QLabel(
self.settings.data[top_key][key]['data']['text']), 1, 0, 1, 1,
Qt.AlignCenter)
for i, (radio, target, color, width) in enumerate(
zip(self.radiobutton, target_list, color_list, width_list)):
@@ -1681,14 +1729,17 @@ class GUIFrame(QWidget):
radio.setFont(self.font_pts10)
radio.setStyleSheet("color : {0};".format(color))
radio.target = target
layout.addWidget(radio, 2, i)
if _fix_width:
radio.setFixedWidth(width)
layout.addWidget(radio, 1, _width*i+1, 1, _width, Qt.AlignCenter)
#_qf = QFrame()
#_qf.setFixedWidth(10)
#layout.addWidget(_qf, 1, layout.columnCount())
self.radiobutton[start_idx].setChecked(True)
self.radiobutton[start_idx].toggled.emit(True)
#self.radiobutton[start_idx].setChecked(True)
#self.radiobutton[start_idx].toggled.emit(True)
layout.addWidget(QHLine(), 3, 0, 1, 3)
layout.addWidget(QHLine(), 2, 0, 1, layout.columnCount())
widget.setLayout(layout)

View File

@@ -34,6 +34,7 @@ class QSendToELOG(QDialog):
attachFile=None, destination_folder=None):
#super(QSendToELOG, self).__init__(parent)
super().__init__()
self.files_text = ''
self.fflag = False
self.parent = parent
@@ -43,7 +44,7 @@ class QSendToELOG(QDialog):
self.destination = destination_folder
self.window_title = self.parent.appname + ": " + _appname
self.pymodule = _pymodule
self.setWindowTitle(self.window_title)
elog_books = list(self.parent.settings.data["ElogBooks"])
@@ -51,6 +52,7 @@ class QSendToELOG(QDialog):
self.elog_items.addItems(elog_books)
self.elog_items.currentIndexChanged.connect(self.on_elog_change)
idx = 0
if logbook is not None:
try:
idx = elog_books.index(logbook)
@@ -144,7 +146,7 @@ class QSendToELOG(QDialog):
self.files = []
self.attributes = {}
self.layout = QVBoxLayout(self)
self.layout.addLayout(logbook)
self.layout.addLayout(self.applicationbox)
@@ -187,7 +189,7 @@ class QSendToELOG(QDialog):
self.fflag = True
filebox.addWidget(self.filesE)
openCloseVBox = QVBoxLayout()
self.openBtn = QPushButton('Add')
self.openBtn.setAutoDefault(False)
@@ -216,7 +218,7 @@ class QSendToELOG(QDialog):
self.messagelbl.setStyleSheet("QLabel { color : red; }")
self.layout.addWidget(self.messagelbl)
self.layout.addLayout(btnLayout)
self.setMinimumWidth(440)
self.exec()