Skip to content
Snippets Groups Projects
precedence_graph_window.py 2.04 KiB
Newer Older
  • Learn to ignore specific revisions
  • """
    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):
    
    Oscar Gustafsson's avatar
    Oscar Gustafsson committed
        """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()
    
    Oscar Gustafsson's avatar
    Oscar Gustafsson committed
            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):
    
    Oscar Gustafsson's avatar
    Oscar Gustafsson committed
            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)
    
    Oscar Gustafsson's avatar
    Oscar Gustafsson committed
            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()