From 1f4fe75c73aa165112ac29d7f982414e60718899 Mon Sep 17 00:00:00 2001 From: chrin Date: Mon, 21 Aug 2023 15:43:00 +0200 Subject: [PATCH] HLAPipelineCtrl to pipeline widget --- guiframe.py | 73 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/guiframe.py b/guiframe.py index a316ff8..26d4008 100644 --- a/guiframe.py +++ b/guiframe.py @@ -24,7 +24,6 @@ from caqtwidgets.pvwidgets import ( from apps4ops.bdbase.enumkind import Facility, MsgSeverity, UserMode - _pymodule = os.path.basename(__file__) _appversion = "1.0.0" @@ -100,6 +99,8 @@ class GUIFrame(QWidget): self.radiobutton = None self.multiple_figure_dict = None + self.pipeline_group_box = None + self.line_sender_dict = {} self.radio_stack_dict = {} self.stack_radiolist_dict = {} @@ -133,7 +134,6 @@ class GUIFrame(QWidget): self.results_layout_2 = QHBoxLayout(self.results_wgt_2) self.results_tab_wgt_2 = QTabWidget(self.results_wgt_2) - self.slicing_group = QGroupBox("Screen: Slicing") self.good_region_group = QGroupBox("Good Region") @@ -156,7 +156,8 @@ class GUIFrame(QWidget): "GUI"]["subResultsTabTitle"] self.sub_results_wgt = [None] * len(self.results_tab_wgt_titles) - self.sub_results_layout = [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) @@ -164,7 +165,8 @@ class GUIFrame(QWidget): 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.arrow_button_widget = [None] * len( + self.results_tab_wgt_titles) self.canvas_current_idx = [0] * len(self.results_tab_wgt_titles) @@ -177,8 +179,10 @@ class GUIFrame(QWidget): self.results_tab_wgt_titles_2 = self.settings.data[ "GUI2"]["subResultsTabTitle"] - self.sub_results_wgt_2 = [None] * len(self.results_tab_wgt_titles_2) - self.sub_results_layout_2 = [None] * len(self.results_tab_wgt_titles_2) + self.sub_results_wgt_2 = [None] * len( + self.results_tab_wgt_titles_2) + self.sub_results_layout_2 = [None] * len( + self.results_tab_wgt_titles_2) for i in range(0, len(self.results_tab_wgt_titles_2)): self.sub_results_wgt_2[i] = QWidget() #self.results_tab_wgt_2) @@ -186,8 +190,10 @@ class GUIFrame(QWidget): self.canvas_2 = [None] * len(self.results_tab_wgt_titles_2) self.nav_2 = [None] * len(self.results_tab_wgt_titles_2) - self.arrow_button_widget_2 = [None] * len(self.results_tab_wgt_titles_2) - self.canvas_current_idx_2 = [0] * len(self.results_tab_wgt_titles_2) + self.arrow_button_widget_2 = [None] * len( + self.results_tab_wgt_titles_2) + self.canvas_current_idx_2 = [0] * len( + self.results_tab_wgt_titles_2) self.init_results_tab_wgt_2() @@ -642,6 +648,10 @@ class GUIFrame(QWidget): #print(self.input_parameters) if key == "goodRegion": self.good_region_group.setEnabled(value) + + + + checkbox = QCheckBox(text) checkbox.setToolTip(tip) @@ -1034,7 +1044,8 @@ class GUIFrame(QWidget): def image_parameters_group(self): - group_box = QGroupBox("Image Pipeline Expert") + self.pipeline_group_box = QGroupBox("Image Pipeline Expert") + box = QHBoxLayout() box.setSpacing(10) @@ -1044,6 +1055,7 @@ class GUIFrame(QWidget): start_val_gr = Qt.Checked if start_val_gr else Qt.Unchecked except KeyError as ex: start_val_gr = Qt.Unchecked + box.addWidget(self.create_checkbox( top_key="Expert", key="goodRegion", text="Good region", tip="Enables good region in pipeline", default_value=start_val_gr)) @@ -1060,8 +1072,8 @@ class GUIFrame(QWidget): tip="Enables background subtraction in pipeline", default_value=start_val_sub)) - group_box.setAlignment(Qt.AlignCenter) - group_box.setObjectName("INNERCENTER") + self.pipeline_group_box.setAlignment(Qt.AlignCenter) + self.pipeline_group_box.setObjectName("INNERCENTER") self.good_region_group.setObjectName("INNER") @@ -1131,16 +1143,28 @@ class GUIFrame(QWidget): self.slicing_group.setLayout(layout) layout_top = QGridLayout() - layout_top.addLayout(box, 0, 0, 1, 2) - layout_top.addWidget(self.good_region_group, 1, 0, 1, 1, + + #layout_top.addWidget(self.create_checkbox( + # top_key="Expert", key="pipelineCtrl", + # text="Enable pipeline control from HLA", + # tip="HLA to set pipeline parameters", + # default_value=0), 0, 0, 1, 2) + + + layout_top.addLayout(box, 1, 0, 1, 2) + layout_top.addWidget(self.good_region_group, 2, 0, 1, 1, Qt.AlignHCenter | Qt.AlignTop) - layout_top.addWidget(self.slicing_group, 1, 1, 1, 1, + layout_top.addWidget(self.slicing_group, 2, 1, 1, 1, Qt.AlignCenter | Qt.AlignTop) layout_top.setHorizontalSpacing(8) - group_box.setLayout(layout_top) - group_box.setFixedHeight(200) - return group_box + self.pipeline_group_box.setLayout(layout_top) + self.pipeline_group_box.setFixedHeight(200) + if "HLAPipelineCtrl" in self.parent.input_parameters: + self.pipeline_group_box.setEnabled( + self.parent.input_parameters["HLAPipelineCtrl"]) + + return self.pipeline_group_box @@ -1150,6 +1174,7 @@ class GUIFrame(QWidget): hline="NONE"): def on_change(state): self.input_parameters[key] = bool(state) + widget = QWidget() layout = QGridLayout() @@ -1671,6 +1696,7 @@ class GUIFrame(QWidget): def check_cb(new_value): sender= self.sender() self.parent.input_parameters[sender.title][sender.key] = new_value + def line_cb(new_value): sender= self.sender() @@ -2282,10 +2308,17 @@ class GUIFrame(QWidget): def input_wgt_qcheckbox(self, key, value, label_text, irow, wgt_grid): def check_cb(new_value): self.parent.input_parameters[key] = bool(new_value) + print("check_cbp", key, new_value, flush=True) + if key == "HLAPipelineCtrl": + if self.pipeline_group_box is not None: + self.pipeline_group_box.setEnabled(bool(new_value)) + line = QCheckBox(label_text) - line.setChecked(Qt.Checked if value else Qt.Unchecked) line.stateChanged.connect(check_cb) + #line.toggled.connect(check_cb) + line.setChecked(Qt.Checked if value else Qt.Unchecked) + line.setMaximumWidth(320) line.setMinimumWidth(100) line.setFixedHeight(28) @@ -2320,8 +2353,8 @@ class GUIFrame(QWidget): wgt_grid.addWidget(line, a, b, c, d, Qt.AlignLeft | Qt.AlignVCenter) - - + #line.stateChanged.emit(Qt.Checked if value else Qt.Unchecked) + return line def input_wgt_qlabel(self, value, irow, wgt_grid):