From 5d8ec51417865f77cd6f6473facb674795be04bb Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Fri, 22 May 2026 09:21:55 +0200 Subject: [PATCH] Scenario: Remove posibility to remove non leaf scenario. --- src/Model/Scenarios.py | 11 +++++++++++ src/View/Scenarios/ContextMenu.py | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Model/Scenarios.py b/src/Model/Scenarios.py index a2db1f98..3dee2beb 100644 --- a/src/Model/Scenarios.py +++ b/src/Model/Scenarios.py @@ -16,6 +16,8 @@ # -*- coding: utf-8 -*- +from functools import reduce + from tools import logger_exception from Model.Tools.PamhyrDict import PamhyrModelDict @@ -78,3 +80,12 @@ class Scenarios(PamhyrModelDict): self._dict[key].set_as_deleted() self._status.modified() + + def is_leaf(self, scenario): + return not reduce( + lambda acc, s: ( + acc or s.parent is scenario + ), + self._dict.values(), + False + ) diff --git a/src/View/Scenarios/ContextMenu.py b/src/View/Scenarios/ContextMenu.py index 319c0d92..1a733082 100644 --- a/src/View/Scenarios/ContextMenu.py +++ b/src/View/Scenarios/ContextMenu.py @@ -57,6 +57,8 @@ class DefaultMenu(AbstractMenu): class ScenarioMenu(AbstractMenu): def run(self): item = self._items[0] + scenarios = item.graph._study.scenarios + current_scenario = item.graph._study.status.scenario.id select = self._menu.addAction(self._trad["menu_select_scenario"]) @@ -64,7 +66,9 @@ class ScenarioMenu(AbstractMenu): delete = None if item.scenario.id != 0: - delete = self._menu.addAction(self._trad["menu_del_scenario"]) + if scenarios.is_leaf(item.scenario): + delete = self._menu.addAction(self._trad["menu_del_scenario"]) + if item.scenario.id == current_scenario: duplicate = self._menu.addAction( self._trad["menu_dup_scenario"]