""" B-ASIC window to show precedence graph. """ from qtpy.QtCore import Qt, Signal from qtpy.QtWidgets import ( QCheckBox, QDialog, QFormLayout, QFrame, QPushButton, QVBoxLayout, ) class PrecedenceGraphWindow(QDialog): """Precedence graph window.""" pc = Signal() def __init__(self, window): super().__init__() self._window = window self._check_box_dict = {} self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowCloseButtonHint) self.setWindowTitle("Show precedence graph") self._dialog_layout = QVBoxLayout() self._show_precedence_graph_button = QPushButton("Show precedence graph") self._show_precedence_graph_button.clicked.connect(self.show_precedence_graph) self._dialog_layout.addWidget(self._show_precedence_graph_button) self.setLayout(self._dialog_layout) def add_sfg_to_dialog(self): if not self._window._sfg_dict: self.accept() self.pc.emit() self._sfg_layout = QVBoxLayout() self._options_layout = QFormLayout() for sfg in self._window._sfg_dict: check_box = QCheckBox() self._options_layout.addRow(sfg, check_box) self._check_box_dict[check_box] = sfg self._sfg_layout.addLayout(self._options_layout) frame = QFrame() frame.setFrameShape(QFrame.HLine) frame.setFrameShadow(QFrame.Sunken) self._dialog_layout.addWidget(frame) self._dialog_layout.addLayout(self._sfg_layout) if len(self._check_box_dict) == 1: check_box = list(self._check_box_dict.keys())[0] check_box.setChecked(True) def show_precedence_graph(self): for check_box, sfg in self._check_box_dict.items(): if check_box.isChecked(): self._window._logger.info( f"Creating a precedence graph from SFG with name: {sfg}." ) self._window._sfg_dict[sfg].show_precedence_graph() self.accept() self.pc.emit()