diff --git a/b_asic/gui_utils/plot_window.py b/b_asic/gui_utils/plot_window.py index 7dc5bb114abf27d4758e2762555e5c8ce967ecaa..9d1ec1b68c9577de3670b4f19ae106088426d106 100644 --- a/b_asic/gui_utils/plot_window.py +++ b/b_asic/gui_utils/plot_window.py @@ -6,6 +6,7 @@ import re import sys +from typing import Dict, List, Optional, Tuple from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar @@ -32,8 +33,9 @@ class PlotWindow(QDialog): def __init__( self, - sim_result, + sim_result: Dict[str, List[complex]], logger=print, + sfg_name: Optional[str] = None, parent=None, ): super().__init__(parent=parent) @@ -43,7 +45,12 @@ class PlotWindow(QDialog): | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint ) - self.setWindowTitle("Simulation result") + title = ( + f"Simulation results: {sfg_name}" + if sfg_name is not None + else "Simulation results" + ) + self.setWindowTitle(title) self._auto_redraw = False # Categorise sim_results into inputs, outputs, delays, others @@ -187,10 +194,16 @@ class PlotWindow(QDialog): self._update_legend() +def start_simulation_dialog( + sim_results: Dict[str, List[complex]], sfg_name: Optional[str] = None +): + app = QApplication(sys.argv) + win = PlotWindow(sim_result=sim_results, sfg_name=sfg_name) + win.exec_() + + # Simple test of the dialog if __name__ == "__main__": - app = QApplication(sys.argv) - # sim_res = {"c1": [3, 6, 7], "c2": [4, 5, 5], "bfly1.0": [7, 0, 0], "bfly1.1": [-1, 0, 2], "0": [1, 2, 3]} sim_res = { '0': [0.5, 0.5, 0, 0], 'add1': [0.5, 0.5, 0, 0], @@ -199,9 +212,4 @@ if __name__ == "__main__": 'in1': [1, 0, 0, 0], 't1': [0, 1, 0, 0], } - win = PlotWindow( - # window=None, sim_result=sim_res, sfg_name="hej", logger=print - sim_result=sim_res, - ) - win.exec_() - # win.show() + start_simulation_dialog(sim_res, "Test data") diff --git a/b_asic/simulation.py b/b_asic/simulation.py index bd4ae903bc0f2f11bd8998787a150db5476b9663..67c6bf3cb5dce6e91492ac23592028eccee2c6e1 100644 --- a/b_asic/simulation.py +++ b/b_asic/simulation.py @@ -217,3 +217,10 @@ class Simulation: Clear all current state of the simulation, except for the results and iteration. """ self._delays.clear() + + def show(self) -> None: + """Show the simulation results.""" + # import here to avoid cyclic imports + from b_asic.gui_utils.plot_window import start_simulation_dialog + + start_simulation_dialog(self.results, self._sfg.name)