From 1f35081fe308456dbaffceceb3ab9c38c342d498 Mon Sep 17 00:00:00 2001
From: payno <henri.payno@esrf.fr>
Date: Mon, 24 Jul 2023 10:04:44 +0200
Subject: [PATCH] orangecontrib: extend 'multiple=True' to more widgets

---
 .../tomwer/widgets/reconstruction/AxisOW.py       |  9 +++++++--
 .../widgets/reconstruction/DarkRefAndCopyOW.py    | 15 ++++++++++++---
 .../tomwer/widgets/reconstruction/NabuOW.py       |  4 ++--
 .../tomwer/widgets/visualization/DataViewerOW.py  |  8 ++++++--
 .../tomwer/widgets/visualization/RadioStackOW.py  |  8 ++++++--
 .../tomwer/widgets/visualization/SliceStackOW.py  |  8 ++++++--
 .../widgets/visualization/VolumeViewerOW.py       |  4 ++--
 7 files changed, 41 insertions(+), 15 deletions(-)

diff --git a/orangecontrib/tomwer/widgets/reconstruction/AxisOW.py b/orangecontrib/tomwer/widgets/reconstruction/AxisOW.py
index 1738caa0d6..3cabd08196 100644
--- a/orangecontrib/tomwer/widgets/reconstruction/AxisOW.py
+++ b/orangecontrib/tomwer/widgets/reconstruction/AxisOW.py
@@ -95,7 +95,12 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
     _ewoks_default_inputs = Setting({"data": None, "axis_params": None, "gui": None})
 
     class Inputs:
-        data = Input(name="data", type=TomwerScanBase, doc="one scan to be process")
+        data = Input(
+            name="data",
+            type=TomwerScanBase,
+            doc="one scan to be process",
+            multiple=True,
+        )
         data_recompute_axis = Input(
             name="change recons params",
             type=_TomwerBaseDock,
@@ -406,7 +411,7 @@ class AxisOW(SuperviseOW, WidgetLongProcessing):
         return self._widget.isModeLock()
 
     @Inputs.data
-    def new_data_in(self, scan):
+    def new_data_in(self, scan, *args, **kwargs):
         if scan is None:
             return
         scan_ = copy.copy(scan)
diff --git a/orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py b/orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py
index 19af59ae43..d143e659a9 100644
--- a/orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py
+++ b/orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py
@@ -81,14 +81,23 @@ class DarkRefAndCopyOW(SuperviseOW, WidgetLongProcessing):
     )
 
     class Inputs:
-        data = Input(name="data", type=TomwerScanBase, doc="one scan to be process")
+        data = Input(
+            name="data",
+            type=TomwerScanBase,
+            doc="one scan to be process",
+            multiple=True,
+        )
         reduced_darks = Input(
-            name="reduced dark(s)", type=dict, doc="dict containing reduced dark(s)"
+            name="reduced dark(s)",
+            type=dict,
+            doc="dict containing reduced dark(s)",
+            multiple=False,
         )
         reduced_flats = Input(
             name="reduced flat(s)",
             type=dict,
             doc="dict of containing reduced flat(s)",
+            multiple=False,
         )
 
     class Outputs:
@@ -174,7 +183,7 @@ class DarkRefAndCopyOW(SuperviseOW, WidgetLongProcessing):
         return super().__new__(cls, *args, **kwargs)
 
     @Inputs.data
-    def process(self, scanID):
+    def process(self, scanID, *args, **kwargs):
         if scanID is None:
             return
         assert isinstance(scanID, TomwerScanBase)
diff --git a/orangecontrib/tomwer/widgets/reconstruction/NabuOW.py b/orangecontrib/tomwer/widgets/reconstruction/NabuOW.py
index 12a464f08f..d4633d4e9d 100644
--- a/orangecontrib/tomwer/widgets/reconstruction/NabuOW.py
+++ b/orangecontrib/tomwer/widgets/reconstruction/NabuOW.py
@@ -89,7 +89,7 @@ class NabuOW(WidgetLongProcessing, SuperviseOW):
             type=TomwerScanBase,
             doc="one scan to be process",
             default=True,
-            multiple=False,
+            multiple=True,
         )
         cluster_in = Input(
             name="cluster_config",
@@ -183,7 +183,7 @@ class NabuOW(WidgetLongProcessing, SuperviseOW):
         return super().__new__(cls, *args, **kwargs)
 
     @Inputs.data
-    def process(self, scan: TomwerScanBase):
+    def process(self, scan, *args, **kwargs):
         assert isinstance(scan, (TomwerScanBase, type(None)))
         if scan is None:
             return
diff --git a/orangecontrib/tomwer/widgets/visualization/DataViewerOW.py b/orangecontrib/tomwer/widgets/visualization/DataViewerOW.py
index ead8ba90d4..01ec56473e 100644
--- a/orangecontrib/tomwer/widgets/visualization/DataViewerOW.py
+++ b/orangecontrib/tomwer/widgets/visualization/DataViewerOW.py
@@ -66,7 +66,11 @@ class DataViewerOW(widget.OWBaseWidget, openclass=True):
     _viewer_config = settings.Setting(dict())
 
     class Inputs:
-        data = Input(name="data", type=TomwerScanBase)
+        data = Input(
+            name="data",
+            type=TomwerScanBase,
+            multiple=True,
+        )
 
     def __init__(self, parent=None):
         super().__init__(parent)
@@ -107,7 +111,7 @@ class DataViewerOW(widget.OWBaseWidget, openclass=True):
                 msg.exec_()
 
     @Inputs.data
-    def addScan(self, scan):
+    def addScan(self, scan, *args, **kwargs):
         if scan is None:
             return
         self.viewer.setScan(scan)
diff --git a/orangecontrib/tomwer/widgets/visualization/RadioStackOW.py b/orangecontrib/tomwer/widgets/visualization/RadioStackOW.py
index a91251f9a6..40a5020cf9 100644
--- a/orangecontrib/tomwer/widgets/visualization/RadioStackOW.py
+++ b/orangecontrib/tomwer/widgets/visualization/RadioStackOW.py
@@ -66,7 +66,11 @@ class RadioStackOW(widget.OWBaseWidget, openclass=True):
     resizing_enabled = True
 
     class Inputs:
-        data = Input(name="data", type=TomwerScanBase)
+        data = Input(
+            name="data",
+            type=TomwerScanBase,
+            multiple=True,
+        )
 
     def __init__(self, parent=None):
         widget.OWBaseWidget.__init__(self, parent)
@@ -75,7 +79,7 @@ class RadioStackOW(widget.OWBaseWidget, openclass=True):
         self._box.layout().addWidget(self._viewer)
 
     @Inputs.data
-    def addLeafScan(self, scanID):
+    def addLeafScan(self, scanID, *args, **kwargs):
         if scanID is None:
             return
         self._viewer.addLeafScan(scanID)
diff --git a/orangecontrib/tomwer/widgets/visualization/SliceStackOW.py b/orangecontrib/tomwer/widgets/visualization/SliceStackOW.py
index 08dd4a4a1e..66bc9e6b1e 100644
--- a/orangecontrib/tomwer/widgets/visualization/SliceStackOW.py
+++ b/orangecontrib/tomwer/widgets/visualization/SliceStackOW.py
@@ -81,7 +81,11 @@ class SlicesStackOW(widget.OWBaseWidget, openclass=True):
     resizing_enabled = True
 
     class Inputs:
-        data = Input(name="data", type=TomwerScanBase)
+        data = Input(
+            name="data",
+            type=TomwerScanBase,
+            multiple=True,
+        )
 
     def __init__(self, parent=None):
         widget.OWBaseWidget.__init__(self, parent)
@@ -90,7 +94,7 @@ class SlicesStackOW(widget.OWBaseWidget, openclass=True):
         self._box.layout().addWidget(self._viewer)
 
     @Inputs.data
-    def addLeafScan(self, scanID):
+    def addLeafScan(self, scanID, *args, **kwargs):
         if scanID is None:
             return
         self._viewer.addLeafScan(scanID)
diff --git a/orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py b/orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py
index a19aee8386..ce5be35fc1 100644
--- a/orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py
+++ b/orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py
@@ -64,7 +64,7 @@ class VolumeViewerOW(widget.OWBaseWidget, openclass=True):
 
     class Inputs:
         data = Input(name="data", type=TomwerScanBase)
-        volume = Input(name="volume", type=TomwerVolumeBase)
+        volume = Input(name="volume", type=TomwerVolumeBase, multiple=True)
 
     def __init__(self, parent=None):
         super().__init__(parent)
@@ -73,7 +73,7 @@ class VolumeViewerOW(widget.OWBaseWidget, openclass=True):
         self._layout.addWidget(self.viewer)
 
     @Inputs.data
-    def addScan(self, scan):
+    def addScan(self, scan, *args, **kwargs):
         if scan is None:
             return
         self.viewer.setScan(scan)
-- 
GitLab