class InnerMask(QWidget): def __init__(self, parent=None): super(InnerMask, self).__init__(parent=None) self.outher_box = QVBoxLayout() self.list_widg = QVBoxLayout() self.list_widg.addWidget(QLabel(str("empty List ... for now"))) self.outher_box.addStretch() self.outher_box.addLayout(self.list_widg) self.outher_box.addStretch() self.setLayout(self.outher_box) self.show() def update_cmd_lst(self, lst_par): for i in reversed(range(self.list_widg.count())): widgetToRemove = self.list_widg.itemAt(i).widget() self.list_widg.removeWidget(widgetToRemove) widgetToRemove.setParent(None) for singl_com in lst_par[0]: new_widg = QLabel(str(singl_com)) self.list_widg.addWidget(new_widg)
class ParamMainWidget(QWidget): update_command_lst_low_level = Signal(list) def __init__(self, phl_obj=None, simp_widg=None, parent=None, upper_label=None): super(ParamMainWidget, self).__init__() self.command_lst = [[None]] self.lst_pair = [] try: self.my_phl_obj = phl_obj self.simp_widg_in = simp_widg except BaseException as e: # We don't want to catch bare exceptions but don't know # what this was supposed to catch. Log it. logger.info("Caught unknown exception #1 type %s: %s", type(e).__name__, e) logger.info("\n\n\n something went wrong here wiht the phil object \n\n\n") self.build_param_widget() label_font = QFont() sys_font_point_size = label_font.pointSize() label_font.setPointSize(sys_font_point_size + 2) self.step_label = QLabel(str(upper_label)) self.step_label.setFont(label_font) self._vbox = QVBoxLayout() self._vbox.addWidget(self.step_label) self._vbox.addWidget(self.dual_level_tab) self.setLayout(self._vbox) # self.show() def build_param_widget(self): self.dual_level_tab = QTabWidget() self.simpler_widget = self.simp_widg_in() self.advanced_widget = ParamAdvancedWidget(phl_obj=self.my_phl_obj, parent=self) self.advanced_widget.scrollable_widget.item_changed.connect(self.update_lin_txt) try: self.simpler_widget.item_changed.connect(self.update_advanced_widget) except BaseException as e: # We don't want to catch bare exceptions but don't know # what this was supposed to catch. Log it. logger.info("Caught unknown exception #2 type %s: %s", type(e).__name__, e) logger.info("found self.simpler_widget without << item_changed >> signal") try: self.simpler_widget.item_to_remove.connect(self.remove_one_par) except AttributeError: pass self.reset_btn = self.simpler_widget.inner_reset_btn self.dual_level_tab.addTab(self.simpler_widget, "Simple") self.dual_level_tab.addTab(self.advanced_widget, "Advanced") self.reset_btn.clicked.connect(self.reset_par) def reset_par(self): for i in reversed(list(range(self._vbox.count()))): widgetToRemove = self._vbox.itemAt(i).widget() self._vbox.removeWidget(widgetToRemove) widgetToRemove.setParent(None) self.build_param_widget() self._vbox.addWidget(self.step_label) self._vbox.addWidget(self.dual_level_tab) self.command_lst[0] = [self.command_lst[0][0]] self.lst_pair = [] self.update_command_lst_low_level.emit(self.command_lst[0]) try: max_nproc = self.simpler_widget.set_max_nproc() if max_nproc > 1: self.raise_nproc_str = ( str(self.simpler_widget.box_nproc.local_path) + "=" + str(max_nproc) ) QTimer.singleShot(1000, self.raise_nproc_to_max) except AttributeError: pass def raise_nproc_to_max(self): found_nproc = False for single_par in self.command_lst[0]: if "mp.nproc" in single_par: found_nproc = True if not found_nproc: self.command_lst[0].append(self.raise_nproc_str) self.update_command_lst_low_level.emit(self.command_lst[0]) def update_advanced_widget(self, str_path, str_value): for bg_widg in ( self.advanced_widget.scrollable_widget.lst_var_widg, self.simpler_widget.lst_var_widg, ): for widg in bg_widg: try: if widg.local_path == str_path: if not hasattr(widg, "tmp_lst") or widg.tmp_lst is None: try: num_val = float(str_value) widg.setValue(num_val) except BaseException: try: str_val = str(str_value) widg.setText(str_val) logger.debug( "widg.local_path = %s", widg.local_path ) except BaseException as ee: logger.info("ee = ", ee) else: for pos, val in enumerate(widg.tmp_lst): if val == str_value: try: widg.setCurrentIndex(pos) except BaseException as e: # We don't want to catch bare exceptions but # dont know what this was supposed to catch. logger.info( "Caught unknown exception #5 type: %s", e ) logger.info("failed to:") logger.info("widg.setCurrentIndex(pos)") except AttributeError: pass def update_simpler_widget(self, str_path, str_value): for widg in self.simpler_widget.lst_var_widg: try: if widg.local_path == str_path: logger.debug("found << widg.local_path == str_path >> ") try: num_val = float(str_value) widg.setValue(num_val) except ValueError: for pos, val in enumerate(widg.tmp_lst): if val == str_value: logger.info("found val, v= %s", val) widg.setCurrentIndex(pos) except AttributeError: pass def update_lin_txt(self, str_path, str_value): # cmd_to_run = str_path + "=" + str_value self.update_advanced_widget(str_path, str_value) self.update_simpler_widget(str_path, str_value) self.lst_pair = update_lst_pair(self.lst_pair, str_path, str_value) self.command_lst[0] = build_lst_str(self.command_lst[0][0], self.lst_pair) self.update_command_lst_low_level.emit(self.command_lst[0]) def update_param_w_lst(self, lst_in, do_reset=True): if do_reset: self.reset_par() if len(lst_in) > 1: self.lst_pair = buils_lst_pair(lst_in) self.command_lst[0] = build_lst_str(lst_in[0], self.lst_pair) for pair in self.lst_pair: self.update_advanced_widget(pair[0], pair[1]) else: self.lst_pair = [] self.command_lst[0] = lst_in def remove_one_par(self, path_str): nxt_lst = [] for single_param in self.command_lst[0]: if str(path_str) in single_param: pass else: nxt_lst.append(str(single_param)) self.update_param_w_lst(nxt_lst, do_reset=False) def gray_me_out(self): self.reset_btn.setEnabled(False) palt_gray = QPalette() palt_gray.setColor(QPalette.WindowText, QColor(88, 88, 88, 88)) for bg_widg in ( self.advanced_widget.scrollable_widget.lst_var_widg, self.advanced_widget.scrollable_widget.lst_label_widg, self.simpler_widget.lst_var_widg, ): for widg in bg_widg: widg.setStyleSheet("color: rgba(88, 88, 88, 88)") try: widg.setEnabled(False) except BaseException as e: # We don't want to catch bare exceptions but don't know # what this was supposed to catch. Log it. logger.info( "Caught unknown exception #9 type %s: %s", type(e).__name__, e ) pass def activate_me(self, cur_nod=None): self.reset_btn.setEnabled(True) for bg_widg in ( self.advanced_widget.scrollable_widget.lst_var_widg, self.advanced_widget.scrollable_widget.lst_label_widg, self.simpler_widget.lst_var_widg, ): for widg in bg_widg: widg.setStyleSheet("color: rgba(0, 0, 0, 255)") try: widg.setStyleSheet(widg.style_orign) except AttributeError: pass try: widg.setEnabled(True) except BaseException as e: # We don't want to catch bare exceptions but don't know # what this was supposed to catch. Log it. logger.info( "Caught unknown exception #11 type %s: %s", type(e).__name__, e )