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"]