Skip to content
Snippets Groups Projects
axestabwidgetview.py 3.56 KiB
Newer Older
# Mantid Repository : https://github.com/mantidproject/mantid
#
# Copyright © 2019 ISIS Rutherford Appleton Laboratory UKRI,
#     NScD Oak Ridge National Laboratory, European Spallation Source
#     & Institut Laue - Langevin
# SPDX - License - Identifier: GPL - 3.0 +
#  This file is part of the mantid workbench.

from __future__ import (absolute_import, unicode_literals)

import numpy as np
from qtpy.QtWidgets import QWidget

from mantidqt.utils.qt import load_ui
from mantidqt.widgets.plotconfigdialog.axestabwidget import AxProperties


class AxesTabWidgetView(QWidget):

    def __init__(self, parent=None):
        super(AxesTabWidgetView, self).__init__(parent=parent)

        self.ui = load_ui(__file__,
                          'axes_tab_widget.ui',
                          baseinstance=self)

        # Set maxima and minima for the axis limit spin boxes
        for axis in ['x', 'y']:
            for limit in ['upper', 'lower']:
                spin_box = getattr(self, '%s%s_limit_spin_box' % (axis, limit))
                spin_box.setRange(np.finfo(np.float32).min,
                                  np.finfo(np.float32).max)

    def populate_select_axes_combo_box(self, axes_names):
        self.select_axes_combo_box.addItems(axes_names)

    def set_current_axes_selector_text(self, new_text):
        current_index = self.select_axes_combo_box.currentIndex()
        self.select_axes_combo_box.setItemText(current_index, new_text)

    def get_title(self):
        return self.axes_title_line_edit.text()

    def set_title(self, title):
        self.axes_title_line_edit.setText(title)

    # X-Axis getters
    def get_xlower_limit(self):
        return self.xlower_limit_spin_box.value()

    def get_xupper_limit(self):
        return self.xupper_limit_spin_box.value()

    def get_xlabel(self):
        return self.xlabel_line_edit.text()

    def get_xscale(self):
        return self.xscale_combo_box.currentText()

    # Y-Axis getters
    def get_ylower_limit(self):
        return self.ylower_limit_spin_box.value()

    def get_yupper_limit(self):
        return self.yupper_limit_spin_box.value()

    def get_ylabel(self):
        return self.ylabel_line_edit.text()

    def get_yscale(self):
        return self.yscale_combo_box.currentText()

    # X-Axis setters
    def set_xlower_limit(self, limit):
        self.xlower_limit_spin_box.setValue(limit)

    def set_xupper_limit(self, limit):
        self.xupper_limit_spin_box.setValue(limit)

    def set_xlabel(self, label):
        self.xlabel_line_edit.setText(label)

    def set_xscale(self, scale):
        self.xscale_combo_box.setCurrentText(scale.title())

    # Y-Axis setters
    def set_ylower_limit(self, limit):
        self.ylower_limit_spin_box.setValue(limit)

    def set_yupper_limit(self, limit):
        self.yupper_limit_spin_box.setValue(limit)

    def set_ylabel(self, label):
        self.ylabel_line_edit.setText(label)

    def set_yscale(self, scale):
        self.yscale_combo_box.setCurrentText(scale.title())

    def get_selected_ax_name(self):
        return self.select_axes_combo_box.currentText()

    def set_properties(self, ax_props):
        self.set_title(ax_props.title)
        self.set_xlower_limit(ax_props.xlim[0])
        self.set_xupper_limit(ax_props.xlim[1])
        self.set_xlabel(ax_props.xlabel)
        self.set_xscale(ax_props.xscale)
        self.set_ylower_limit(ax_props.ylim[0])
        self.set_yupper_limit(ax_props.ylim[1])
        self.set_ylabel(ax_props.ylabel)
        self.set_yscale(ax_props.yscale)

    def get_properties(self):
        return AxProperties.from_view(self)