diff --git a/src/Model/Study.py b/src/Model/Study.py index 4e054c24..2d7292b7 100644 --- a/src/Model/Study.py +++ b/src/Model/Study.py @@ -482,6 +482,8 @@ class Study(SQLModel): river = self.load_scenario(scenario) self._river = river + self.status.scenario = scenario + if reduce( lambda a, s: a or (s.parent is scenario), self.scenarios.lst, diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py index db4ec59f..e63954ec 100644 --- a/src/View/MainWindow.py +++ b/src/View/MainWindow.py @@ -88,7 +88,7 @@ from View.RunSolver.Window import ( from View.Results.Window import ResultsWindow from View.Results.CompareDialog import ( - CompareSolversWindow, CompareScenariosWindow + CompareScenariosWindow ) from View.RunSolver.WindowAdisTS import ( @@ -153,7 +153,6 @@ define_model_action = [ "action_menu_edit_reach_sediment_layers", "action_menu_edit_reservoirs", "action_menu_edit_hydraulic_structures", "action_menu_additional_file", "action_menu_results_last", "action_menu_open_results_from_file", - # "action_menu_compare_results", "action_menu_compare_scenarios_results", "action_menu_boundary_conditions_sediment", "action_menu_rep_additional_lines", "action_menu_output_rk", @@ -301,7 +300,6 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): "action_menu_close": self.close_model, "action_menu_results_last": self.open_last_results, "action_menu_open_results_from_file": self.open_results_from_file, - # "action_menu_compare_results": self.compare_results, "action_menu_compare_scenarios_results": self.compare_results_scenarios, "action_menu_open_results_adists": self.open_results_adists, @@ -1711,43 +1709,6 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit): results=file_name[0] ) - # def compare_results(self): - # if self._study is None: - # return - - # run = CompareSolversWindow( - # study=self._study, - # config=self.conf, - # parent=self - # ) - # if not run.exec(): - # return - - # results = self.diff_results( - # run.solver1, run.solver2 - # ) - - # # At least one result not available - # if results is None: - # return - - # # Windows already opened - # if self.sub_window_exists( - # CompareSolversWindow, - # data=[self._study, None] + - # [r._solver for r in results] + - # [r._repertory for r in results] + - # [r._name for r in results] - # ): - # return - - # res = ResultsWindow( - # study=self._study, - # results=results, - # parent=self - # ) - # res.show() - def compare_results_scenarios(self): if self._study is None: return diff --git a/src/View/Results/CompareDialog.py b/src/View/Results/CompareDialog.py index b77a133d..62949c9e 100644 --- a/src/View/Results/CompareDialog.py +++ b/src/View/Results/CompareDialog.py @@ -32,106 +32,14 @@ _translate = QCoreApplication.translate logger = logging.getLogger() -class CompareSolversWindow(PamhyrDialog): - _pamhyr_ui = "CompareSolvers" - _pamhyr_name = "Compare solvers" - - def __init__(self, study=None, config=None, - parent=None): - self._solver1 = None - self._solver2 = None - - name = _translate("Solver", "Compare solvers") - super(CompareSolversWindow, self).__init__( - title=name, - study=study, - config=config, - options=[], - parent=parent - ) - - self.setup_solvers() - self.setup_connections() - self.select_last_solver() - - def setup_solvers(self): - solvers = self._config.solvers - solvers_name = list( - map( - self._format_solver_name, - solvers - ) - ) - - self.combobox_add_items("comboBox1", solvers_name) - self.combobox_add_items("comboBox2", solvers_name) - - def setup_connections(self): - self.find(QPushButton, "pushButton_ok").clicked.connect(self.accept) - self.find(QPushButton, "pushButton_cancel")\ - .clicked.connect(self.reject) - - def select_last_solver(self): - solvers = self._config.solvers - last = self._config.last_solver_name - - solver = list( - filter( - lambda s: s.name == last, - solvers - ) - ) - - if len(solver) != 0: - self.set_combobox_text( - "comboBox1", - self._format_solver_name(solver[0]) - ) - - def _format_solver_name(self, solver): - return f"{solver.name} - ({solver._type})" - - @property - def solver1(self): - return self._solver1 - - @property - def solver2(self): - return self._solver2 - - def accept(self): - solver_name1 = self.get_combobox_text("comboBox1") - solver_name1 = solver_name1.rsplit(" - ", 1)[0] - - self._solver1 = next( - filter( - lambda s: s.name == solver_name1, - self._config.solvers - ) - ) - solver_name2 = self.get_combobox_text("comboBox2") - solver_name2 = solver_name2.rsplit(" - ", 1)[0] - - self._solver2 = next( - filter( - lambda s: s.name == solver_name2, - self._config.solvers - ) - ) - - super(CompareSolversWindow, self).accept() - - class CompareScenariosWindow(PamhyrDialog): _pamhyr_ui = "CompareScenarios" _pamhyr_name = "Compare scenarios" def __init__(self, study=None, config=None, parent=None): - self._solver1 = None - self._solver2 = None - self._scenario1 = None - self._scenario2 = None + self._solvers = [] + self._scenarios = [] name = _translate("Solver", "Compare solvers") super(CompareScenariosWindow, self).__init__( @@ -200,53 +108,42 @@ class CompareScenariosWindow(PamhyrDialog): @property def solver1(self): - return self._solver1 + return self._solvers[0] @property def solver2(self): - return self._solver2 + return self._solvers[1] @property def scenario1(self): - return self._scenario1 + return self._scenarios[0] @property def scenario2(self): - return self._scenario2 + return self._scenarios[1] def accept(self): - solver_name1 = self.get_combobox_text("comboBoxSolver1") - solver_name1 = solver_name1.rsplit(" - ", 1)[0] - self._solver1 = next( - filter( - lambda s: s.name == solver_name1, - self._config.solvers + for cb in ["comboBoxSolver1", "comboBoxSolver2"]: + name = self.get_combobox_text(cb) + name = name.rsplit(" - ", 1)[0] + self._solvers.append( + next( + filter( + lambda s: s.name == name, + self._config.solvers + ) + ) ) - ) - solver_name2 = self.get_combobox_text("comboBoxSolver2") - solver_name2 = solver_name2.rsplit(" - ", 1)[0] - self._solver2 = next( - filter( - lambda s: s.name == solver_name2, - self._config.solvers + for cb in ["comboBoxScenario1", "comboBoxScenario2"]: + name = self.get_combobox_text(cb) + self._scenarios.append( + next( + filter( + lambda s: s.name == name, + self._study.scenarios.lst + ) + ) ) - ) - - scenario_name1 = self.get_combobox_text("comboBoxScenario1") - self._scenario1 = next( - filter( - lambda s: s.name == scenario_name1, - self._study.scenarios - ) - ) - - scenario_name2 = self.get_combobox_text("comboBoxScenario2") - self._scenario2 = next( - filter( - lambda s: s.name == scenario_name2, - self._study.scenarios - ) - ) super(CompareScenariosWindow, self).accept()