from PySide2.QtWidgets import QDialog, QPushButton, QVBoxLayout, QCheckBox,\ QFrame, QFormLayout from PySide2.QtCore import Qt, Signal from b_asic import SFG class ShowPCWindow(QDialog): pc = Signal() def __init__(self, window): super(ShowPCWindow, self).__init__() self._window = window self.check_box_list = [] self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowCloseButtonHint) self.setWindowTitle("Show PC") self.dialog_layout = QVBoxLayout() self.pc_btn = QPushButton("Show PC") self.pc_btn.clicked.connect(self.show_precedence_graph) self.dialog_layout.addWidget(self.pc_btn) self.setLayout(self.dialog_layout) def add_sfg_to_dialog(self): sfg_layout = QVBoxLayout() options_layout = QFormLayout() for sfg in self._window.sfg_list: check_box = QCheckBox() options_layout.addRow(sfg.name, check_box) self.check_box_list.append(check_box) sfg_layout.addLayout(options_layout) frame = QFrame() frame.setFrameShape(QFrame.HLine) frame.setFrameShadow(QFrame.Sunken) self.dialog_layout.addWidget(frame) self.dialog_layout.addLayout(sfg_layout) def show_precedence_graph(self): for i, check_box in enumerate(self.check_box_list): if check_box.isChecked(): self._window.logger.info("Creating a precedence chart from " + self._window.sfg_list[i].name) self._window.sfg_list[i].show_precedence_graph() break self.accept() self.pc.emit()