v1.4.0
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user