diff --git a/qt/python/mantidqt/widgets/plotconfigdialog/curvestabwidget/presenter.py b/qt/python/mantidqt/widgets/plotconfigdialog/curvestabwidget/presenter.py index db3fb0fb500359453269829111fc68f2ab5a074b..9ac1c01f46ae483cee4ade0a08967bb51df0227b 100644 --- a/qt/python/mantidqt/widgets/plotconfigdialog/curvestabwidget/presenter.py +++ b/qt/python/mantidqt/widgets/plotconfigdialog/curvestabwidget/presenter.py @@ -321,16 +321,16 @@ class CurvesTabWidgetPresenter: """ current_curve_index = self.view.select_curve_combo_box.currentIndex() - line_style_index = self.view.line.line_style_combo_box.currentIndex() - draw_style_index = self.view.line.draw_style_combo_box.currentIndex() - width = self.view.line.line_width_spin_box.value() + line_style = self.view.line.get_style() + draw_style = self.view.line.get_draw_style() + width = self.view.line.get_width() for i in range(len(self.curve_names_dict)): self.view.select_curve_combo_box.setCurrentIndex(i) - self.view.line.line_style_combo_box.setCurrentIndex(line_style_index) - self.view.line.draw_style_combo_box.setCurrentIndex(draw_style_index) - self.view.line.line_width_spin_box.setValue(width) + self.view.line.set_style(line_style) + self.view.line.set_draw_style(draw_style) + self.view.line.set_width(width) self.apply_properties() @@ -340,14 +340,14 @@ class CurvesTabWidgetPresenter: def marker_apply_to_all(self): current_curve_index = self.view.select_curve_combo_box.currentIndex() - marker_style_index = self.view.marker.marker_style_combo_box.currentIndex() - marker_size = self.view.marker.marker_size_spin_box.value() + marker_style = self.view.marker.get_style() + marker_size = self.view.marker.get_size() for i in range(len(self.curve_names_dict)): self.view.select_curve_combo_box.setCurrentIndex(i) - self.view.marker.marker_style_combo_box.setCurrentIndex(marker_style_index) - self.view.marker.marker_size_spin_box.setValue(marker_size) + self.view.marker.set_style(marker_style) + self.view.marker.set_size(marker_size) self.apply_properties() @@ -357,24 +357,24 @@ class CurvesTabWidgetPresenter: def errorbars_apply_to_all(self): current_curve_index = self.view.select_curve_combo_box.currentIndex() - checked = self.view.errorbars.hide_errorbars_tickbox.isChecked() + checked = self.view.errorbars.get_hide() if not checked: - width = self.view.errorbars.width_spin_box.value() - capsize = self.view.errorbars.capsize_spin_box.value() - cap_thickness = self.view.errorbars.cap_thickness_spin_box.value() - error_every = self.view.errorbars.error_every_spin_box.value() + width = self.view.errorbars.get_width() + capsize = self.view.errorbars.get_capsize() + cap_thickness = self.view.errorbars.get_cap_thickness() + error_every = self.view.errorbars.get_error_every() for i in range(len(self.curve_names_dict)): self.view.select_curve_combo_box.setCurrentIndex(i) - self.view.errorbars.hide_errorbars_tickbox.setChecked(checked) + self.view.errorbars.set_hide(checked) if not checked: - self.view.errorbars.width_spin_box.setValue(width) - self.view.errorbars.capsize_spin_box.setValue(capsize) - self.view.errorbars.cap_thickness_spin_box.setValue(cap_thickness) - self.view.errorbars.error_every_spin_box.setValue(error_every) + self.view.errorbars.set_width(width) + self.view.errorbars.set_capsize(capsize) + self.view.errorbars.set_cap_thickness(cap_thickness) + self.view.errorbars.set_error_every(error_every) self.apply_properties() diff --git a/qt/python/mantidqt/widgets/plotconfigdialog/curvestabwidget/test/test_curvestabwidgetpresenter.py b/qt/python/mantidqt/widgets/plotconfigdialog/curvestabwidget/test/test_curvestabwidgetpresenter.py index 91dece126ea348fd435ffabad92ffb7ac491bdd2..9de0d4a66b016c63d2c47095488aec0779f3dcdf 100644 --- a/qt/python/mantidqt/widgets/plotconfigdialog/curvestabwidget/test/test_curvestabwidgetpresenter.py +++ b/qt/python/mantidqt/widgets/plotconfigdialog/curvestabwidget/test/test_curvestabwidgetpresenter.py @@ -11,8 +11,10 @@ from __future__ import (absolute_import, unicode_literals) import unittest from matplotlib import use as mpl_use + mpl_use('Agg') # noqa from matplotlib.pyplot import figure +from qtpy.QtCore import Qt from mantid.simpleapi import CreateWorkspace from mantid.plots import MantidAxes # register MantidAxes projection # noqa @@ -217,6 +219,78 @@ class CurvesTabWidgetPresenterTest(unittest.TestCase): presenter.apply_properties() self.assertFalse(ax.containers[0][2][0].get_visible()) + def make_figure_with_multiple_curves(self): + fig = figure() + ax = fig.add_subplot(111, projection='mantid') + ax.set_title('Axes 0') + ax.plot(self.ws, specNum=1, label='Workspace') + ax.plot(self.ws, specNum=1, label='Workspace 2') + ax.plot(self.ws, specNum=1, label='Workspace 3') + return fig + + @patch.object(CurvesTabWidgetPresenter, "apply_properties") + def test_line_apply_to_all_button_sets_and_applies_properties_to_each_curve(self, mock_apply_properties): + fig = self.make_figure_with_multiple_curves() + + presenter = self._generate_presenter(fig=fig) + presenter.line_apply_to_all() + + self.assertEqual(presenter.view.line.set_style.call_count, 3) + self.assertEqual(presenter.view.line.set_draw_style.call_count, 3) + self.assertEqual(presenter.view.line.set_width.call_count, 3) + self.assertEqual(mock_apply_properties.call_count, 3) + + @patch.object(CurvesTabWidgetPresenter, "apply_properties") + def test_marker_apply_to_all_button_sets_and_applies_properties_to_each_curve(self, mock_apply_properties): + fig = self.make_figure_with_multiple_curves() + + presenter = self._generate_presenter(fig=fig) + presenter.marker_apply_to_all() + + self.assertEqual(presenter.view.marker.set_style.call_count, 3) + self.assertEqual(presenter.view.marker.set_size.call_count, 3) + self.assertEqual(mock_apply_properties.call_count, 3) + + @patch.object(CurvesTabWidgetPresenter, "apply_properties") + def test_errorbar_apply_to_all_button_sets_and_applies_properties_to_each_curve_if_hide_errorbars_is_unticked\ + (self, mock_apply_properties): + fig = self.make_figure_with_multiple_curves() + + mock_view = Mock(get_selected_ax_name=lambda: "Axes 0: (0, 0)", + get_selected_curve_name=lambda: "Workspace") + + mock_view.errorbars.get_hide.return_value = False + + presenter = self._generate_presenter(fig=fig, mock_view=mock_view) + presenter.errorbars_apply_to_all() + + self.assertEqual(presenter.view.errorbars.set_hide.call_count, 3) + self.assertEqual(presenter.view.errorbars.set_width.call_count, 3) + self.assertEqual(presenter.view.errorbars.set_capsize.call_count, 3) + self.assertEqual(presenter.view.errorbars.set_cap_thickness.call_count, 3) + self.assertEqual(presenter.view.errorbars.set_error_every.call_count, 3) + self.assertEqual(mock_apply_properties.call_count, 3) + + @patch.object(CurvesTabWidgetPresenter, "apply_properties") + def test_errorbar_apply_to_all_button_does_not_set_properties_if_hide_errorbars_is_ticked\ + (self, mock_apply_properties): + fig = self.make_figure_with_multiple_curves() + + mock_view = Mock(get_selected_ax_name=lambda: "Axes 0: (0, 0)", + get_selected_curve_name=lambda: "Workspace") + + mock_view.errorbars.get_hide.return_value = True + + presenter = self._generate_presenter(fig=fig, mock_view=mock_view) + presenter.errorbars_apply_to_all() + + self.assertEqual(presenter.view.errorbars.set_hide.call_count, 3) + self.assertEqual(presenter.view.errorbars.set_width.call_count, 0) + self.assertEqual(presenter.view.errorbars.set_capsize.call_count, 0) + self.assertEqual(presenter.view.errorbars.set_cap_thickness.call_count, 0) + self.assertEqual(presenter.view.errorbars.set_error_every.call_count, 0) + self.assertEqual(mock_apply_properties.call_count, 3) + if __name__ == '__main__': unittest.main()