From 6f6079eed04f515ec5bb674dafabb5746737c0fa Mon Sep 17 00:00:00 2001
From: Alexian Masson <12852383+AlexianMasson@users.noreply.github.com>
Date: Fri, 28 Jun 2024 11:56:22 +0200
Subject: [PATCH] Finalize RepairProfilesAlgorithm

---
 PreCourlis/PreCourlis.py                           |  8 ++++++++
 PreCourlis/processing/precourlis_provider.py       |  3 +++
 PreCourlis/processing/repair_profiles_algorithm.py | 10 ++++++----
 PreCourlis/widgets/profile_dialog.py               |  2 +-
 4 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/PreCourlis/PreCourlis.py b/PreCourlis/PreCourlis.py
index 36b8a65..a89f661 100644
--- a/PreCourlis/PreCourlis.py
+++ b/PreCourlis/PreCourlis.py
@@ -193,6 +193,11 @@ class PreCourlisPlugin:
             self.import_points,
             icon=import_icon,
         )
+        self.add_action(
+            self.tr("Repair profiles layer"),
+            self.repair_profiles,
+            icon=import_icon,
+        )
 
         self.menu.addSeparator()
 
@@ -368,6 +373,9 @@ class PreCourlisPlugin:
         params = {"DEFAULT_ELEVATION": settings.default_elevation}
         execAlgorithmDialog("precourlis:import_points", params)
 
+    def repair_profiles(self):
+        execAlgorithmDialog("precourlis:repair_profiles", {})
+
     def open_editor(self):
         dialog = ProfileDialog(self.iface.mainWindow())
         dialog.setAttribute(Qt.WA_DeleteOnClose)
diff --git a/PreCourlis/processing/precourlis_provider.py b/PreCourlis/processing/precourlis_provider.py
index 604aa27..22c2aba 100644
--- a/PreCourlis/processing/precourlis_provider.py
+++ b/PreCourlis/processing/precourlis_provider.py
@@ -43,6 +43,8 @@ from PreCourlis.processing.add_intermediate_profiles_algorithm import (
     AddIntermediateProfilesAlgorithm,
 )
 from PreCourlis.processing.define_topo_bath_algorithm import DefineTopoBathAlgorithm
+from PreCourlis.processing.repair_profiles_algorithm import RepairProfilesAlgorithm
+
 
 PROFILE_LINE_STYLE = resource_filename(
     "PreCourlis", "resources/styles/profile_line.qml"
@@ -90,6 +92,7 @@ class PreCourlisProvider(QgsProcessingProvider):
         self.addAlgorithm(PrepareTracksAlgorithm())
         self.addAlgorithm(AddIntermediateProfilesAlgorithm())
         self.addAlgorithm(DefineTopoBathAlgorithm())
+        self.addAlgorithm(RepairProfilesAlgorithm())
 
         # Set default style for some outputs
         RenderingStyles.loadStyles()
diff --git a/PreCourlis/processing/repair_profiles_algorithm.py b/PreCourlis/processing/repair_profiles_algorithm.py
index 24defbd..af7fcf5 100644
--- a/PreCourlis/processing/repair_profiles_algorithm.py
+++ b/PreCourlis/processing/repair_profiles_algorithm.py
@@ -2,10 +2,10 @@ from qgis.core import (
     QgsProcessing,
     QgsProcessingParameterVectorLayer,
     QgsProcessingParameterFeatureSink,
-    QgsProcessingOutputLayerDefinition
+    QgsProcessingOutputLayerDefinition,
 )
 
-from PreCourlis import processing
+import processing
 from PreCourlis.processing.precourlis_algorithm import PreCourlisAlgorithm
 
 
@@ -39,7 +39,9 @@ class RepairProfilesAlgorithm(PreCourlisAlgorithm):
         output = QgsProcessingOutputLayerDefinition(parameters[self.OUTPUT])
         output.destinationName = self.tr("Interpolated")
 
-        TOPO_BAT_EXPR = "'B' || replace(rpad('', num_points($geometry) - 1, ','), ',', ',B')"
+        TOPO_BAT_EXPR = (
+            "'B' || replace(rpad('', num_points($geometry) - 1, ','), ',', ',B')"
+        )
 
         processing.run(
             "native:refactorfields",
@@ -117,7 +119,7 @@ class RepairProfilesAlgorithm(PreCourlisAlgorithm):
                         "type": 10,
                     },
                 ],
-                "OUTPUT": output
+                "OUTPUT": output,
             },
         )
 
diff --git a/PreCourlis/widgets/profile_dialog.py b/PreCourlis/widgets/profile_dialog.py
index 8c6e771..0f817b4 100644
--- a/PreCourlis/widgets/profile_dialog.py
+++ b/PreCourlis/widgets/profile_dialog.py
@@ -383,7 +383,7 @@ class ProfileDialog(QtWidgets.QDialog, FORM_CLASS):
                     self.tr("Missing field"),
                     self.tr(
                         "The field 'topo_bath' is missing in the layer. "
-                        "Please add it with hte re pair profiles algorithm before using this tool."
+                        "Please add it with the repair profiles algorithm before using this tool."
                     ),
                     Qgis.MessageLevel.Critical,
                     duration=5,
-- 
GitLab