コード例 #1
0
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)
コード例 #2
0
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
                    )