From 68c3923d5a8b7100a325bf58f37d61e11c2685c8 Mon Sep 17 00:00:00 2001
From: Oscar Gustafsson <oscar.gustafsson@gmail.com>
Date: Sat, 29 Apr 2023 22:28:19 +0200
Subject: [PATCH] Add zoom to fit for SFG GUI

---
 b_asic/GUI/main_window.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/b_asic/GUI/main_window.py b/b_asic/GUI/main_window.py
index ded267a4..5f75ae09 100644
--- a/b_asic/GUI/main_window.py
+++ b/b_asic/GUI/main_window.py
@@ -202,6 +202,11 @@ class SFGMainWindow(QMainWindow):
         self._statusbar_visible.triggered.connect(self._toggle_statusbar)
         self._ui.view_menu.addAction(self._statusbar_visible)
 
+        self._ui.view_menu.addSeparator()
+        self._zoom_to_fit_action = QAction("Zoom to &fit")
+        self._zoom_to_fit_action.triggered.connect(self._zoom_to_fit)
+        self._ui.view_menu.addAction(self._zoom_to_fit_action)
+
         # Non-modal dialogs
         self._keybindings_page = None
         self._about_page = None
@@ -869,6 +874,12 @@ class SFGMainWindow(QMainWindow):
             operation._toggle_button(pressed=True)
         self.update_statusbar("Unselected all operations")
 
+    def _zoom_to_fit(self, event=None):
+        """Callback for zoom to fit SFGs in window."""
+        self._graphics_view.fitInView(
+            self._scene.sceneRect(), Qt.AspectRatioMode.KeepAspectRatio
+        )
+
     def _simulate_sfg(self) -> None:
         """Callback for simulating SFGs in separate threads."""
         self._thread = dict()
-- 
GitLab