From 25b10ce6b0d4959031a21092c3ef90294d51ee1b Mon Sep 17 00:00:00 2001 From: Joern Ungermann Date: Mon, 20 Mar 2023 10:30:06 +0100 Subject: [PATCH] Made handling and storing of (q)settings more consistent * consistent naming of dialogs * consistent naming of settings * move of load/store to one base class * move of default settings to global, private variables for simpler (testing) access --- mslib/msui/linearview.py | 49 ++----- mslib/msui/mpl_qtwidget.py | 136 ++++++++++--------- mslib/msui/multiple_flightpath_dockwidget.py | 7 +- mslib/msui/sideview.py | 92 ++++--------- mslib/msui/topview.py | 79 +++-------- tests/_test_msui/test_sideview.py | 3 +- tests/_test_msui/test_suffix.py | 3 +- tests/_test_msui/test_topview.py | 3 +- 8 files changed, 143 insertions(+), 229 deletions(-) diff --git a/mslib/msui/linearview.py b/mslib/msui/linearview.py index 718a85507..76fe31dae 100644 --- a/mslib/msui/linearview.py +++ b/mslib/msui/linearview.py @@ -25,7 +25,7 @@ limitations under the License. """ -from mslib.utils.config import config_loader, save_settings_qsettings, load_settings_qsettings +from mslib.utils.config import config_loader from PyQt5 import QtGui, QtWidgets from mslib.utils.qt import ui_linearview_window as ui from mslib.utils.qt import ui_linearview_options as ui_opt @@ -42,7 +42,7 @@ class MSUI_LV_Options_Dialog(QtWidgets.QDialog, ui_opt.Ui_LinearViewOptionsDialo Dialog class to specify Linear View Options. """ - def __init__(self, parent=None, settings_dict=None): + def __init__(self, parent=None, settings=None): """ Arguments: parent -- Qt widget that is parent to this widget. @@ -51,33 +51,26 @@ def __init__(self, parent=None, settings_dict=None): super(MSUI_LV_Options_Dialog, self).__init__(parent) self.setupUi(self) - default_settings_dict = { - "plot_title_size": "default", - "axes_label_size": "default" - } - - if settings_dict is not None: - default_settings_dict.update(settings_dict) - settings_dict = default_settings_dict + assert settings is not None for i in range(self.lv_cbtitlesize.count()): - if self.lv_cbtitlesize.itemText(i) == settings_dict["plot_title_size"]: + if self.lv_cbtitlesize.itemText(i) == settings["plot_title_size"]: self.lv_cbtitlesize.setCurrentIndex(i) for i in range(self.lv_cbaxessize.count()): - if self.lv_cbaxessize.itemText(i) == settings_dict["axes_label_size"]: + if self.lv_cbaxessize.itemText(i) == settings["axes_label_size"]: self.lv_cbaxessize.setCurrentIndex(i) def get_settings(self): """ Returns the specified settings from the GUI elements. """ - settings_dict = { + settings = { "plot_title_size": self.lv_cbtitlesize.currentText(), "axes_label_size": self.lv_cbaxessize.currentText() } - return settings_dict + return settings class MSUILinearViewWindow(MSUIMplViewWindow, ui.Ui_LinearWindow): @@ -101,15 +94,12 @@ def __init__(self, parent=None, model=None, _id=None): self.setFlightTrackModel(model) - self.settings_tag = "linearview" - self.load_settings() - # Connect slots and signals. # ========================== # Tool opener. self.cbTools.currentIndexChanged.connect(self.openTool) - self.lvoptionbtn.clicked.connect(self.set_options) + self.lvoptionbtn.clicked.connect(self.open_settings_dialog) self.openTool(WMS + 1) @@ -147,26 +137,11 @@ def setFlightTrackModel(self, model): if self.docks[WMS] is not None: self.docks[WMS].widget().setFlightTrackModel(model) - def set_options(self): - settings = self.getView().plotter.get_settings() - dlg = MSUI_LV_Options_Dialog(parent=self, settings_dict=settings) + def open_settings_dialog(self): + settings = self.getView().get_settings() + dlg = MSUI_LV_Options_Dialog(parent=self, settings=settings) dlg.setModal(True) if dlg.exec_() == QtWidgets.QDialog.Accepted: settings = dlg.get_settings() - self.getView().plotter.set_settings(settings) - self.save_settings() + self.getView().plotter.set_settings(settings, save=True) dlg.destroy() - - def save_settings(self): - """ - Save the current settings of plot options to the file self.settingsfile. - """ - settings = self.getView().plotter.get_settings() - save_settings_qsettings(self.settings_tag, settings) - - def load_settings(self): - """ - Load settings from the file self.settingsfile. - """ - settings = load_settings_qsettings(self.settings_tag) - self.getView().plotter.set_settings(settings) diff --git a/mslib/msui/mpl_qtwidget.py b/mslib/msui/mpl_qtwidget.py index b80a2706a..448e24e70 100644 --- a/mslib/msui/mpl_qtwidget.py +++ b/mslib/msui/mpl_qtwidget.py @@ -45,7 +45,7 @@ from mslib.utils.thermolib import convert_pressure_to_vertical_axis_measure from mslib.utils import thermolib, FatalUserError -from mslib.utils.config import config_loader +from mslib.utils.config import config_loader, save_settings_qsettings, load_settings_qsettings from mslib.utils.units import units from mslib.msui import mpl_pathinteractor as mpl_pi from mslib.msui import mpl_map @@ -56,12 +56,51 @@ matplotlib.rcParams['savefig.directory'] = LAST_SAVE_DIRECTORY +_DEFAULT_SETTINGS_TOPVIEW = { + "draw_graticule": True, + "draw_coastlines": True, + "fill_waterbodies": True, + "fill_continents": True, + "draw_flighttrack": True, + "draw_marker": True, + "label_flighttrack": True, + "tov_plot_title_size": "default", + "tov_axes_label_size": "default", + "colour_water": ((153 / 255.), (255 / 255.), (255 / 255.), (255 / 255.)), + "colour_land": ((204 / 255.), (153 / 255.), (102 / 255.), (255 / 255.)), + "colour_ft_vertices": (0, 0, 1, 1), + "colour_ft_waypoints": (1, 0, 0, 1)} + +_DEFAULT_SETTINGS_SIDEVIEW = { + "vertical_extent": (1050, 180), + "vertical_axis": "pressure", + "secondary_axis": "no secondary axis", + "plot_title_size": "default", + "axes_label_size": "default", + "flightlevels": [300], + "draw_flightlevels": True, + "draw_flighttrack": True, + "fill_flighttrack": True, + "label_flighttrack": True, + "draw_verticals": True, + "draw_marker": True, + "draw_ceiling": True, + "colour_ft_vertices": (0, 0, 1, 1), + "colour_ft_waypoints": (1, 0, 0, 1), + "colour_ft_fill": (0, 0, 1, 0.15), + "colour_ceiling": (0, 0, 1, 0.15)} + +_DEFAULT_SETTINGS_LINEARVIEW = { + "plot_title_size": "default", + "axes_label_size": "default"} + class ViewPlotter: - def __init__(self, fig=None, ax=None): + def __init__(self, fig=None, ax=None, settings_tag=None, settings=None): # setup Matplotlib Figure and Axis self.fig, self.ax = fig, ax - self.settings = {} + self.settings = settings + self.settings_tag = settings_tag if self.fig is None: assert ax is None self.fig = figure.Figure(facecolor="w") # 0.75 @@ -115,7 +154,7 @@ def get_settings(self): """ return self.settings - def set_settings(self, settings): + def set_settings(self, settings, save=False): """Update local settings influencing the plotting Args: @@ -123,11 +162,19 @@ def set_settings(self, settings): """ if settings is not None: self.settings.update(settings) + if save: + self.save_settings() + + def load_settings(self): + self.settings = load_settings_qsettings(self.settings_tag, self.settings) + + def save_settings(self): + save_settings_qsettings(self.settings_tag, self.settings) class TopViewPlotter(ViewPlotter): - def __init__(self, fig=None, ax=None): - super().__init__(fig, ax) + def __init__(self, fig=None, ax=None, settings=None): + super().__init__(fig, ax, settings_tag="topview", settings=_DEFAULT_SETTINGS_TOPVIEW) self.map = None self.legimg = None self.legax = None @@ -136,20 +183,8 @@ def __init__(self, fig=None, ax=None): self.tov_als = None # Sets the default fontsize parameters' values for topview from MSSDefaultConfig. self.topview_size_settings = config_loader(dataset="topview") - # logging.debug("applying map appearance settings %s." % settings) - self.set_settings({"draw_graticule": True, - "draw_coastlines": True, - "fill_waterbodies": True, - "fill_continents": True, - "draw_flighttrack": True, - "draw_marker": True, - "label_flighttrack": True, - "tov_plot_title_size": "default", - "tov_axes_label_size": "default", - "colour_water": ((153 / 255.), (255 / 255.), (255 / 255.), (255 / 255.)), - "colour_land": ((204 / 255.), (153 / 255.), (102 / 255.), (255 / 255.)), - "colour_ft_vertices": (0, 0, 1, 1), - "colour_ft_waypoints": (1, 0, 0, 1)}) + self.load_settings() + self.set_settings(settings) self.ax.figure.canvas.draw() def init_map(self, **kwargs): @@ -196,11 +231,11 @@ def clear_figure(self): self.ax.set_title("Top view", horizontalalignment="left", x=0) self.ax.figure.canvas.draw() - def set_settings(self, settings): + def set_settings(self, settings, save=False): """Apply settings from dictionary 'settings' to the view. If settings is None, apply default settings. """ - super().set_settings(settings) + super().set_settings(settings, save) # Stores the exact value of fontsize for topview plot title size(tov_pts) self.tov_pts = (self.topview_size_settings["plot_title_size"] @@ -327,26 +362,8 @@ def __init__(self, fig=None, ax=None, settings=None, numlabels=None, num_interpo numlabels = config_loader(dataset='num_labels') if num_interpolation_points is None: num_interpolation_points = config_loader(dataset='num_interpolation_points') - super().__init__(fig, ax) - - # Default settings. - self.set_settings({"vertical_extent": (1050, 180), - "vertical_axis": "pressure", - "secondary_axis": "no secondary axis", - "plot_title_size": "default", - "axes_label_size": "default", - "flightlevels": [], - "draw_flightlevels": True, - "draw_flighttrack": True, - "fill_flighttrack": True, - "label_flighttrack": True, - "draw_verticals": True, - "draw_marker": True, - "draw_ceiling": True, - "colour_ft_vertices": (0, 0, 1, 1), - "colour_ft_waypoints": (1, 0, 0, 1), - "colour_ft_fill": (0, 0, 1, 0.15), - "colour_ceiling": (0, 0, 1, 0.15)}) + super().__init__(fig, ax, settings_tag="sideview", settings=_DEFAULT_SETTINGS_SIDEVIEW) + self.load_settings() self.set_settings(settings) self.numlabels = numlabels @@ -604,17 +621,19 @@ class LinearViewPlotter(ViewPlotter): flight track / list of waypoints. """ - def __init__(self, model=None, numlabels=None): + def __init__(self, model=None, numlabels=None, settings=None): """ Arguments: model -- WaypointsTableModel defining the linear section. """ if numlabels is None: numlabels = config_loader(dataset='num_labels') - super().__init__() + super().__init__(settings_tag="linearview", settings=_DEFAULT_SETTINGS_LINEARVIEW) + self.load_settings() - self.settings = {"plot_title_size": "default", - "axes_label_size": "default"} + # Sets the default values of plot sizes from MissionSupportDefaultConfig. + self.linearview_size_settings = config_loader(dataset="linearview") + self.set_settings(settings) # Setup the plot. self.numlabels = numlabels @@ -624,8 +643,6 @@ def __init__(self, model=None, numlabels=None): self.waypoints_model = None self.vertical_lines = [] self.basename = "linearview" - # Sets the default values of plot sizes from MissionSupportDefaultConfig. - self.linearview_size_settings = config_loader(dataset="linearview") def setup_linear_view(self): """Set up a linear section view. @@ -708,12 +725,12 @@ def draw_image(self, xmls, colors=None, scales=None): par.yaxis.label.set_color(color.replace("0x", "#")) - def set_settings(self, settings): + def set_settings(self, settings, save=False): """ Apply settings from options ui to the linear view """ - super().set_settings(settings) + super().set_settings(settings, save) pts = (self.linearview_size_settings["plot_title_size"] if self.settings["plot_title_size"] == "default" else int(self.settings["plot_title_size"])) @@ -778,11 +795,11 @@ def get_plot_size_in_px(self): def get_settings(self): return self.plotter.get_settings() - def set_settings(self, settings): + def set_settings(self, settings, save=False): """ Apply settings from options ui to the linear view """ - self.plotter.set_settings(settings) + self.plotter.set_settings(settings, save) def _getSaveFileName(parent, title="Choose a filename to save to", filename="test.png", @@ -1251,12 +1268,12 @@ def update_ceiling(self, visible, color): line.set_visible(visible) self.draw() - def set_settings(self, settings): + def set_settings(self, settings, save=False): """Apply settings to view. """ old_vertical_lines = self.plotter.settings["draw_verticals"] if settings is not None: - self.plotter.set_settings(settings) + self.plotter.set_settings(settings, save) settings = self.plotter.get_settings() self.set_flight_levels(settings["flightlevels"]) self.set_flight_levels_visible(settings["draw_flightlevels"]) @@ -1362,9 +1379,6 @@ def __init__(self, model=None, numlabels=None): self.plotter = LinearViewPlotter() super(MplLinearViewCanvas, self).__init__(self.plotter) - settings = {"plot_title_size": "default", - "axes_label_size": "default"} - # Setup the plot. self.numlabels = numlabels self.plotter.setup_linear_view() @@ -1377,10 +1391,6 @@ def __init__(self, model=None, numlabels=None): if model: self.set_waypoints_model(model) - # Sets the default values of plot sizes from MissionSupportDefaultConfig. - self.linearview_size_settings = config_loader(dataset="linearview") - self.plotter.set_settings(settings) - def set_waypoints_model(self, model): """Set the WaypointsTableModel defining the linear section. If no model had been set before, create a new interactor object on the model @@ -1629,12 +1639,12 @@ def plot_multiple_flightpath(self, multiple_flightpath): """ self.multiple_flightpath = multiple_flightpath - def set_settings(self, settings): + def set_settings(self, settings, save=False): """Apply settings from dictionary 'settings_dict' to the view. If settings is None, apply default settings. """ - self.plotter.set_settings(settings) + self.plotter.set_settings(settings, save) settings = self.get_settings() if self.waypoints_interactor is not None: wpi_plotter = self.waypoints_interactor.plotter diff --git a/mslib/msui/multiple_flightpath_dockwidget.py b/mslib/msui/multiple_flightpath_dockwidget.py index bc8de20c7..03bd8af30 100644 --- a/mslib/msui/multiple_flightpath_dockwidget.py +++ b/mslib/msui/multiple_flightpath_dockwidget.py @@ -126,8 +126,11 @@ def __init__(self, parent=None, view=None, listFlightTracks=None, self.listFlightTracks = listFlightTracks self.mscolab_server_url = mscolab_server_url self.token = token - self.ft_settings_dict = self.ui.get_settings() - self.color = (0, 0, 1, 1) + if self.ui is not None: + ft_settings_dict = self.ui.getView().get_settings() + self.color = ft_settings_dict["colour_ft_vertices"] + else: + self.color = (0, 0, 1, 1) self.obb = [] self.operation_list = False diff --git a/mslib/msui/sideview.py b/mslib/msui/sideview.py index 07ebc7bd4..d4edcca4c 100644 --- a/mslib/msui/sideview.py +++ b/mslib/msui/sideview.py @@ -37,7 +37,7 @@ from mslib.msui import wms_control as wms from mslib.msui.icons import icons from mslib.utils import thermolib -from mslib.utils.config import config_loader, save_settings_qsettings, load_settings_qsettings +from mslib.utils.config import config_loader from mslib.utils.units import units, convert_to # Dock window indices. @@ -50,44 +50,23 @@ class MSUI_SV_OptionsDialog(QtWidgets.QDialog, ui_opt.Ui_SideViewOptionsDialog): in "ui_sideview_options.py". """ - def __init__(self, parent=None, settings_dict=None): + def __init__(self, parent=None, settings=None): """ Arguments: parent -- Qt widget that is parent to this widget. - settings_dict -- dictionary containing sideview options. + settings -- dictionary containing sideview options. """ super(MSUI_SV_OptionsDialog, self).__init__(parent) self.setupUi(self) - default_settings_dict = { - "vertical_extent": (1050, 180), - "vertical_axis": "pressure", - "secondary_axis": "no secondary axis", - "plot_title_size": "default", - "axes_label_size": "default", - "flightlevels": [300, 320, 340], - "draw_flightlevels": True, - "draw_flighttrack": True, - "draw_marker": True, - "fill_flighttrack": True, - "label_flighttrack": True, - "draw_verticals": True, - "colour_ft_vertices": (0, 0, 0, 0), - "colour_ft_waypoints": (0, 0, 0, 0), - "colour_ft_fill": (0, 0, 0, 0), - "draw_ceiling": True, - "colour_ceiling": (0.1, 0.5, 0.1, 0), - } self._suffixes = ['hPa', 'km', 'hft'] - if settings_dict is not None: - default_settings_dict.update(settings_dict) - settings_dict = default_settings_dict + assert settings is not None - self.setBotTopLimits(settings_dict["vertical_axis"]) - self.sbPbot.setValue(settings_dict["vertical_extent"][0]) - self.sbPtop.setValue(settings_dict["vertical_extent"][1]) + self.setBotTopLimits(settings["vertical_axis"]) + self.sbPbot.setValue(settings["vertical_extent"][0]) + self.sbPtop.setValue(settings["vertical_extent"][1]) - flightlevels = settings_dict["flightlevels"] + flightlevels = settings["flightlevels"] self.tableWidget.setRowCount(len(flightlevels)) flightlevels.sort() for i, level in enumerate(flightlevels): @@ -95,29 +74,29 @@ def __init__(self, parent=None, settings_dict=None): self.tableWidget.setItem(i, 0, tableitem) for i in range(self.cbVerticalAxis.count()): - if self.cbVerticalAxis.itemText(i) == settings_dict["vertical_axis"]: + if self.cbVerticalAxis.itemText(i) == settings["vertical_axis"]: self.cbVerticalAxis.setCurrentIndex(i) self.sbPbot.setSuffix(" " + self._suffixes[i]) self.sbPtop.setSuffix(" " + self._suffixes[i]) for i in range(self.cbVerticalAxis2.count()): - if self.cbVerticalAxis2.itemText(i) == settings_dict["secondary_axis"]: + if self.cbVerticalAxis2.itemText(i) == settings["secondary_axis"]: self.cbVerticalAxis2.setCurrentIndex(i) # Shows previously selected element in the fontsize comboboxes as the current index. for i in range(self.cbtitlesize.count()): - if self.cbtitlesize.itemText(i) == settings_dict["plot_title_size"]: + if self.cbtitlesize.itemText(i) == settings["plot_title_size"]: self.cbtitlesize.setCurrentIndex(i) for i in range(self.cbaxessize.count()): - if self.cbaxessize.itemText(i) == settings_dict["axes_label_size"]: + if self.cbaxessize.itemText(i) == settings["axes_label_size"]: self.cbaxessize.setCurrentIndex(i) - self.cbDrawFlightLevels.setChecked(settings_dict["draw_flightlevels"]) - self.cbDrawFlightTrack.setChecked(settings_dict["draw_flighttrack"]) - self.cbFillFlightTrack.setChecked(settings_dict["fill_flighttrack"]) - self.cbLabelFlightTrack.setChecked(settings_dict["label_flighttrack"]) - self.cbDrawCeiling.setChecked(settings_dict["draw_ceiling"]) - self.cbVerticalLines.setChecked(settings_dict["draw_verticals"]) - self.cbDrawMarker.setChecked(settings_dict["draw_marker"]) + self.cbDrawFlightLevels.setChecked(settings["draw_flightlevels"]) + self.cbDrawFlightTrack.setChecked(settings["draw_flighttrack"]) + self.cbFillFlightTrack.setChecked(settings["fill_flighttrack"]) + self.cbLabelFlightTrack.setChecked(settings["label_flighttrack"]) + self.cbDrawCeiling.setChecked(settings["draw_ceiling"]) + self.cbVerticalLines.setChecked(settings["draw_verticals"]) + self.cbDrawMarker.setChecked(settings["draw_marker"]) for button, ids in [(self.btFillColour, "colour_ft_fill"), (self.btWaypointsColour, "colour_ft_waypoints"), @@ -125,7 +104,7 @@ def __init__(self, parent=None, settings_dict=None): (self.btCeilingColour, "colour_ceiling")]: palette = QtGui.QPalette(button.palette()) colour = QtGui.QColor() - colour.setRgbF(*settings_dict[ids]) + colour.setRgbF(*settings[ids]) palette.setColor(QtGui.QPalette.Button, colour) button.setPalette(palette) @@ -222,7 +201,7 @@ def get_settings(self): """ Return settings dictionary with values from the GUI elements. """ - settings_dict = { + settings = { "vertical_extent": (float(self.sbPbot.value()), float(self.sbPtop.value())), "vertical_axis": self.cbVerticalAxis.currentText(), "secondary_axis": self.cbVerticalAxis2.currentText(), @@ -245,7 +224,7 @@ def get_settings(self): "colour_ceiling": QtGui.QPalette(self.btCeilingColour.palette()).color(QtGui.QPalette.Button).getRgbF(), } - return settings_dict + return settings def verticalunitsclicked(self, index): new_unit = self._suffixes[index] @@ -288,14 +267,11 @@ def __init__(self, parent=None, model=None, _id=None): self.setFlightTrackModel(model) - self.settings_tag = "sideview" - self.load_settings() - # Connect slots and signals. # ========================== # Buttons to set sideview options. - self.btOptions.clicked.connect(self.set_options) + self.btOptions.clicked.connect(self.open_settings_dialog) # Tool opener. self.cbTools.currentIndexChanged.connect(self.openTool) @@ -335,30 +311,14 @@ def setFlightTrackModel(self, model): if self.docks[WMS] is not None: self.docks[WMS].widget().setFlightTrackModel(model) - def set_options(self): + def open_settings_dialog(self): """ Slot to open a dialog that lets the user specifiy sideview options. """ settings = self.getView().get_settings() - dlg = MSUI_SV_OptionsDialog(parent=self, settings_dict=settings) + dlg = MSUI_SV_OptionsDialog(parent=self, settings=settings) dlg.setModal(True) if dlg.exec_() == QtWidgets.QDialog.Accepted: settings = dlg.get_settings() - self.getView().set_settings(settings) - self.save_settings() + self.getView().set_settings(settings, save=True) dlg.destroy() - - def save_settings(self): - """ - Save the current settings (vertical extent, displayed flightlevels - etc.) to the file self.settingsfile. - """ - settings = self.getView().get_settings() - save_settings_qsettings(self.settings_tag, settings) - - def load_settings(self): - """ - Load settings from the file self.settingsfile. - """ - settings = load_settings_qsettings(self.settings_tag) - self.getView().set_settings(settings) diff --git a/mslib/msui/topview.py b/mslib/msui/topview.py index 77eae6d75..9ef1e2a2a 100644 --- a/mslib/msui/topview.py +++ b/mslib/msui/topview.py @@ -30,7 +30,7 @@ import functools import logging -from mslib.utils.config import config_loader, save_settings_qsettings, load_settings_qsettings +from mslib.utils.config import config_loader from mslib.utils.coordinate import get_projection_params from PyQt5 import QtGui, QtWidgets, QtCore from mslib.utils.qt import ui_topview_window as ui @@ -62,32 +62,17 @@ class MSUI_TV_MapAppearanceDialog(QtWidgets.QDialog, ui_ma.Ui_MapAppearanceDialo """ signal_ft_vertices_color_change = QtCore.Signal(str, tuple) - def __init__(self, parent=None, settings_dict=None, wms_connected=False): + def __init__(self, parent=None, settings=None, wms_connected=False): """ Arguments: parent -- Qt widget that is parent to this widget. - settings_dict -- dictionary containing topview options. + settings -- dictionary containing topview options. """ super(MSUI_TV_MapAppearanceDialog, self).__init__(parent) self.setupUi(self) - if settings_dict is None: - settings_dict = {"draw_graticule": True, - "draw_coastlines": True, - "fill_waterbodies": True, - "fill_continents": True, - "draw_flighttrack": True, - "draw_marker": True, - "label_flighttrack": True, - "tov_plot_title_size": "default", - "tov_axes_label_size": "default", - "colour_water": (0, 0, 0, 0), - "colour_land": (0, 0, 0, 0), - "colour_ft_vertices": (0, 0, 0, 0), - "colour_ft_waypoints": (0, 0, 0, 0) - } - - settings_dict["fill_waterbodies"] = True # removing water bodies does not work properly + assert settings is not None + settings["fill_waterbodies"] = True # removing water bodies does not work properly self.wms_connected = wms_connected # check parent.wms_connected to disable cbFillWaterBodies and cbFillContinents @@ -98,16 +83,16 @@ def __init__(self, parent=None, settings_dict=None, wms_connected=False): self.cbFillContinents.setStyleSheet("color: black") self.cbFillWaterBodies.setStyleSheet("color: black") else: - self.cbFillWaterBodies.setChecked(settings_dict["fill_waterbodies"]) + self.cbFillWaterBodies.setChecked(settings["fill_waterbodies"]) self.cbFillWaterBodies.setEnabled(False) - self.cbFillContinents.setChecked(settings_dict["fill_continents"]) + self.cbFillContinents.setChecked(settings["fill_continents"]) self.cbFillContinents.setEnabled(True) - self.cbDrawGraticule.setChecked(settings_dict["draw_graticule"]) - self.cbDrawCoastlines.setChecked(settings_dict["draw_coastlines"]) - self.cbDrawFlightTrack.setChecked(settings_dict["draw_flighttrack"]) - self.cbDrawMarker.setChecked(settings_dict["draw_marker"]) - self.cbLabelFlightTrack.setChecked(settings_dict["label_flighttrack"]) + self.cbDrawGraticule.setChecked(settings["draw_graticule"]) + self.cbDrawCoastlines.setChecked(settings["draw_coastlines"]) + self.cbDrawFlightTrack.setChecked(settings["draw_flighttrack"]) + self.cbDrawMarker.setChecked(settings["draw_marker"]) + self.cbLabelFlightTrack.setChecked(settings["label_flighttrack"]) for button, ids in [(self.btWaterColour, "colour_water"), (self.btLandColour, "colour_land"), @@ -115,7 +100,7 @@ def __init__(self, parent=None, settings_dict=None, wms_connected=False): (self.btVerticesColour, "colour_ft_vertices")]: palette = QtGui.QPalette(button.palette()) colour = QtGui.QColor() - colour.setRgbF(*settings_dict[ids]) + colour.setRgbF(*settings[ids]) palette.setColor(QtGui.QPalette.Button, colour) button.setPalette(palette) @@ -127,17 +112,17 @@ def __init__(self, parent=None, settings_dict=None, wms_connected=False): # Shows previously selected element in the fontsize comboboxes as the current index. for i in range(self.tov_cbtitlesize.count()): - if self.tov_cbtitlesize.itemText(i) == settings_dict["tov_plot_title_size"]: + if self.tov_cbtitlesize.itemText(i) == settings["tov_plot_title_size"]: self.tov_cbtitlesize.setCurrentIndex(i) for i in range(self.tov_cbaxessize.count()): - if self.tov_cbaxessize.itemText(i) == settings_dict["tov_axes_label_size"]: + if self.tov_cbaxessize.itemText(i) == settings["tov_axes_label_size"]: self.tov_cbaxessize.setCurrentIndex(i) def get_settings(self): """ """ - settings_dict = { + settings = { "draw_graticule": self.cbDrawGraticule.isChecked(), "draw_coastlines": self.cbDrawCoastlines.isChecked(), "fill_waterbodies": self.cbFillWaterBodies.isChecked(), @@ -157,7 +142,7 @@ def get_settings(self): "colour_ft_waypoints": QtGui.QPalette(self.btWaypointsColour.palette()).color(QtGui.QPalette.Button).getRgbF(), } - return settings_dict + return settings def setColour(self, which): """ @@ -213,9 +198,6 @@ def __init__(self, parent=None, model=None, _id=None, active_flighttrack=None, m # Dock windows [WMS, Satellite, Trajectories, Remote Sensing, KML Overlay, Multiple Flightpath]: self.docks = [None, None, None, None, None, None] - self.settings_tag = "topview" - self.load_settings() - # Initialise the GUI elements (map view, items of combo boxes etc.). self.setup_top_view() @@ -240,7 +222,7 @@ def __init__(self, parent=None, model=None, _id=None, active_flighttrack=None, m self.cbChangeMapSection.activated.connect(self.changeMapSection) # Settings - self.btSettings.clicked.connect(self.settings_dialogue) + self.btSettings.clicked.connect(self.open_settings_dialog) # Roundtrip self.btRoundtrip.clicked.connect(self.make_roundtrip) @@ -425,17 +407,16 @@ def setIdentifier(self, identifier): super(MSUITopViewWindow, self).setIdentifier(identifier) self.mpl.canvas.map.set_identifier(identifier) - def settings_dialogue(self): + def open_settings_dialog(self): """ """ settings = self.getView().get_settings() - dlg = MSUI_TV_MapAppearanceDialog(parent=self, settings_dict=settings, wms_connected=self.wms_connected) + dlg = MSUI_TV_MapAppearanceDialog(parent=self, settings=settings, wms_connected=self.wms_connected) dlg.setModal(False) dlg.signal_ft_vertices_color_change.connect(self.set_ft_vertices_color) if dlg.exec_() == QtWidgets.QDialog.Accepted: settings = dlg.get_settings() - self.getView().set_settings(settings) - self.save_settings() + self.getView().set_settings(settings, save=True) self.mpl.canvas.waypoints_interactor.redraw_path() dlg.destroy() @@ -444,21 +425,6 @@ def set_ft_vertices_color(self, which, color): if which == "ft_vertices": self.signal_ft_vertices_color_change.emit(color) - def save_settings(self): - """ - Save the current settings (map appearance) to the file - self.settingsfile. - """ - settings = self.getView().get_settings() - save_settings_qsettings(self.settings_tag, settings) - - def load_settings(self): - """ - Load settings from the file self.settingsfile. - """ - settings = load_settings_qsettings(self.settings_tag, {}) - self.getView().set_settings(settings) - def make_roundtrip(self): """ Copies the first waypoint and inserts it at the back of the list again @@ -492,6 +458,3 @@ def is_roundtrip_possible(self): def update_roundtrip_enabled(self): self.btRoundtrip.setEnabled(self.is_roundtrip_possible()) - - def get_settings(self): - return load_settings_qsettings(self.settings_tag, {}) diff --git a/tests/_test_msui/test_sideview.py b/tests/_test_msui/test_sideview.py index 851fb6173..ca570b19a 100644 --- a/tests/_test_msui/test_sideview.py +++ b/tests/_test_msui/test_sideview.py @@ -36,6 +36,7 @@ from PyQt5 import QtWidgets, QtTest, QtCore, QtGui from mslib.msui import flighttrack as ft import mslib.msui.sideview as tv +from mslib.msui.mpl_qtwidget import _DEFAULT_SETTINGS_SIDEVIEW from tests.utils import wait_until_signal PORTS = list(range(19000, 19500)) @@ -44,7 +45,7 @@ class Test_MSS_SV_OptionsDialog(object): def setup_method(self): self.application = QtWidgets.QApplication(sys.argv) - self.window = tv.MSUI_SV_OptionsDialog() + self.window = tv.MSUI_SV_OptionsDialog(settings=_DEFAULT_SETTINGS_SIDEVIEW) self.window.show() QtWidgets.QApplication.processEvents() QtTest.QTest.qWaitForWindowExposed(self.window) diff --git a/tests/_test_msui/test_suffix.py b/tests/_test_msui/test_suffix.py index 4ad40b2eb..0c2f7d1c4 100644 --- a/tests/_test_msui/test_suffix.py +++ b/tests/_test_msui/test_suffix.py @@ -30,12 +30,13 @@ import sys from PyQt5 import QtWidgets, QtTest import mslib.msui.sideview as tv +from mslib.msui.mpl_qtwidget import _DEFAULT_SETTINGS_SIDEVIEW class Test_SuffixChange(object): def setup_method(self): self.application = QtWidgets.QApplication(sys.argv) - self.window = tv.MSUI_SV_OptionsDialog() + self.window = tv.MSUI_SV_OptionsDialog(settings=_DEFAULT_SETTINGS_SIDEVIEW) self.window.show() QtWidgets.QApplication.processEvents() QtTest.QTest.qWaitForWindowExposed(self.window) diff --git a/tests/_test_msui/test_topview.py b/tests/_test_msui/test_topview.py index 6f0e8af40..2f1c3d84d 100644 --- a/tests/_test_msui/test_topview.py +++ b/tests/_test_msui/test_topview.py @@ -36,6 +36,7 @@ from PyQt5 import QtWidgets, QtCore, QtTest from mslib.msui import flighttrack as ft import mslib.msui.topview as tv +from mslib.msui.mpl_qtwidget import _DEFAULT_SETTINGS_TOPVIEW from tests.utils import wait_until_signal PORTS = list(range(28000, 28500)) @@ -44,7 +45,7 @@ class Test_MSS_TV_MapAppearanceDialog(object): def setup_method(self): self.application = QtWidgets.QApplication(sys.argv) - self.window = tv.MSUI_TV_MapAppearanceDialog() + self.window = tv.MSUI_TV_MapAppearanceDialog(settings=_DEFAULT_SETTINGS_TOPVIEW) self.window.show() QtWidgets.QApplication.processEvents() QtTest.QTest.qWaitForWindowExposed(self.window)