From db24ee830c3ec8c6ea40add2c610bc0aa9fca1eb Mon Sep 17 00:00:00 2001 From: Conor Finn <conor.finn@stfc.ac.uk> Date: Tue, 17 Dec 2019 09:08:37 +0000 Subject: [PATCH] RE #27187 Load default if values from file invalid --- .../engineering_diffraction.py | 16 +++++++++++----- .../settings/settings_presenter.py | 15 +++++++++++---- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/scripts/Engineering/gui/engineering_diffraction/engineering_diffraction.py b/scripts/Engineering/gui/engineering_diffraction/engineering_diffraction.py index 5572427a2ab..ba311894e2f 100644 --- a/scripts/Engineering/gui/engineering_diffraction/engineering_diffraction.py +++ b/scripts/Engineering/gui/engineering_diffraction/engineering_diffraction.py @@ -44,13 +44,21 @@ class EngineeringDiffractionGui(QtWidgets.QMainWindow, Ui_main_window): self.set_on_settings_clicked(self.open_settings) self.btn_settings.setIcon(get_icon("mdi.settings", "black", 1.2)) - # Setup Tabs + + # Setup Elements + self.setup_settings() self.setup_calibration() self.setup_focus() # Setup notifiers self.setup_calibration_notifier() + def setup_settings(self): + model = SettingsModel() + view = SettingsView(self) + self.settings_presenter = SettingsPresenter(model, view) + self.settings_presenter.load_settings_from_file_or_default() + def setup_calibration(self): cal_model = CalibrationModel() cal_view = CalibrationView(parent=self.tabs) @@ -87,10 +95,8 @@ class EngineeringDiffractionGui(QtWidgets.QMainWindow, Ui_main_window): InterfaceManager().showCustomInterfaceHelp(self.doc) def open_settings(self): - settings_view = SettingsView(self) - settings_model = SettingsModel() - self.settings_presenter = SettingsPresenter(settings_model, settings_view) - settings_view.show() + self.settings_presenter.load_existing_settings() + self.settings_presenter.show() def get_rb_no(self): return self.lineEdit_RBNumber.text() diff --git a/scripts/Engineering/gui/engineering_diffraction/settings/settings_presenter.py b/scripts/Engineering/gui/engineering_diffraction/settings/settings_presenter.py index 59330c47aa6..380cfdef549 100644 --- a/scripts/Engineering/gui/engineering_diffraction/settings/settings_presenter.py +++ b/scripts/Engineering/gui/engineering_diffraction/settings/settings_presenter.py @@ -22,15 +22,18 @@ class SettingsPresenter(object): def __init__(self, model, view): self.model = model self.view = view - self.load_existing_settings() + self.settings = {} # Connect view signals self.view.set_on_apply_clicked(self.save_new_settings) self.view.set_on_ok_clicked(self.save_and_close_dialog) self.view.set_on_cancel_clicked(self.close_dialog) + def show(self): + self.view.show() + def load_existing_settings(self): - self._load_settings_from_file() + self.load_settings_from_file_or_default() self._show_settings_in_view() def close_dialog(self): @@ -59,7 +62,7 @@ class SettingsPresenter(object): if self._validate_settings(self.settings): self.model.set_settings_dict(self.settings) - def _load_settings_from_file(self): + def load_settings_from_file_or_default(self): self.settings = self.model.get_settings_dict(SETTINGS_LIST) if not self._validate_settings(self.settings): self.settings = DEFAULT_SETTINGS.copy() @@ -67,4 +70,8 @@ class SettingsPresenter(object): @staticmethod def _validate_settings(settings): - return settings.keys() == SETTINGS_LIST + all_keys = settings.keys() == SETTINGS_LIST + save_location = str(settings["save_location"]) + save_valid = save_location is not "" and save_location is not None + recalc_valid = settings["recalc_vanadium"] is not None + return all_keys and save_valid and recalc_valid -- GitLab