From 30d628b2308579dd915611e0889fe4421197fc1e Mon Sep 17 00:00:00 2001
From: Oscar Gustafsson <oscar.gustafsson@gmail.com>
Date: Sat, 10 May 2025 12:51:46 +0200
Subject: [PATCH] Add utility operations to docs and sfg gui

---
 b_asic/GUI/gui_interface.py            | 18 +++++++++++++++++-
 b_asic/GUI/main_window.py              |  6 ++++++
 docs_sphinx/api/index.rst              |  1 +
 docs_sphinx/api/resource_assigner.rst  |  4 ++--
 docs_sphinx/api/utility_operations.rst | 12 ++++++++++++
 5 files changed, 38 insertions(+), 3 deletions(-)
 create mode 100644 docs_sphinx/api/utility_operations.rst

diff --git a/b_asic/GUI/gui_interface.py b/b_asic/GUI/gui_interface.py
index 46ea3c86..58f8c931 100644
--- a/b_asic/GUI/gui_interface.py
+++ b/b_asic/GUI/gui_interface.py
@@ -128,6 +128,15 @@ class Ui_main_window:
         self.special_operations_list.setGeometry(QtCore.QRect(10, 0, 141, 211))
         self.special_operations_list.setObjectName("special_operations_list")
         self.operation_list.addItem(self.special_operations_page, "")
+        self.utility_operations_page = QtWidgets.QWidget()
+        self.utility_operations_page.setGeometry(QtCore.QRect(0, 0, 171, 217))
+        self.utility_operations_page.setObjectName("utility_operations_page")
+        self.utility_operations_list = QtWidgets.QListWidget(
+            self.utility_operations_page
+        )
+        self.utility_operations_list.setGeometry(QtCore.QRect(10, 0, 141, 211))
+        self.utility_operations_list.setObjectName("utility_operations_list")
+        self.operation_list.addItem(self.utility_operations_page, "")
         self.custom_operations_page = QtWidgets.QWidget()
         self.custom_operations_page.setGeometry(QtCore.QRect(0, 0, 171, 217))
         self.custom_operations_page.setObjectName("custom_operations_page")
@@ -225,7 +234,14 @@ class Ui_main_window:
             self.operation_list.indexOf(self.special_operations_page),
             _translate("main_window", "Special operations"),
         )
-        __sortingEnabled = self.special_operations_list.isSortingEnabled()
+        __sortingEnabled = self.utility_operations_list.isSortingEnabled()
+        self.utility_operations_list.setSortingEnabled(False)
+        self.utility_operations_list.setSortingEnabled(__sortingEnabled)
+        self.operation_list.setItemText(
+            self.operation_list.indexOf(self.utility_operations_page),
+            _translate("main_window", "Utility operations"),
+        )
+        __sortingEnabled = self.utility_operations_list.isSortingEnabled()
         self.custom_operations_list.setSortingEnabled(False)
         self.custom_operations_list.setSortingEnabled(__sortingEnabled)
         self.operation_list.setItemText(
diff --git a/b_asic/GUI/main_window.py b/b_asic/GUI/main_window.py
index 6c084e80..126cdd36 100644
--- a/b_asic/GUI/main_window.py
+++ b/b_asic/GUI/main_window.py
@@ -129,6 +129,9 @@ class SFGMainWindow(QMainWindow):
         self.add_operations_from_namespace(
             b_asic.special_operations, self._ui.special_operations_list
         )
+        self.add_operations_from_namespace(
+            b_asic.utility_operations, self._ui.utility_operations_list
+        )
 
         self._shortcut_refresh_operations = QShortcut(
             QKeySequence("Ctrl+R"), self._ui.operation_box
@@ -162,6 +165,9 @@ class SFGMainWindow(QMainWindow):
         self._ui.special_operations_list.itemClicked.connect(
             self._on_list_widget_item_clicked
         )
+        self._ui.utility_operations_list.itemClicked.connect(
+            self._on_list_widget_item_clicked
+        )
         self._ui.custom_operations_list.itemClicked.connect(
             self._on_list_widget_item_clicked
         )
diff --git a/docs_sphinx/api/index.rst b/docs_sphinx/api/index.rst
index 38c8237a..0f6a9745 100644
--- a/docs_sphinx/api/index.rst
+++ b/docs_sphinx/api/index.rst
@@ -24,4 +24,5 @@ API
     signal_generator.rst
     simulation.rst
     special_operations.rst
+    utility_operations.rst
     utils.rst
diff --git a/docs_sphinx/api/resource_assigner.rst b/docs_sphinx/api/resource_assigner.rst
index 8b5228e7..7861d219 100644
--- a/docs_sphinx/api/resource_assigner.rst
+++ b/docs_sphinx/api/resource_assigner.rst
@@ -1,6 +1,6 @@
-********************
+****************************
 ``b_asic.resource_assigner``
-********************
+****************************
 
 .. automodule:: b_asic.resource_assigner
    :members:
diff --git a/docs_sphinx/api/utility_operations.rst b/docs_sphinx/api/utility_operations.rst
new file mode 100644
index 00000000..b411f014
--- /dev/null
+++ b/docs_sphinx/api/utility_operations.rst
@@ -0,0 +1,12 @@
+*****************************
+``b_asic.utility_operations``
+*****************************
+
+.. inheritance-diagram:: b_asic.utility_operations
+   :parts: 1
+   :top-classes: b_asic.graph_component.GraphComponent, b_asic.port.SignalSourceProvider
+
+.. automodule:: b_asic.utility_operations
+   :members:
+   :undoc-members:
+   :show-inheritance:
-- 
GitLab