text: from __future__ import absolute_import, division, print_function
  
  import os
  
  from qtpy import QtWidgets
  
  from glue.external.echo.qt import autoconnect_callbacks_to_qt
  from glue.utils.qt import load_ui, fix_tab_widget_fontsize
  from glue.viewers.image.qt.slice_widget import MultiSliceWidgetHelper
  from glue.viewers.matplotlib.state import MatplotlibDataViewerState
  
  __all__ = ['ImageOptionsWidget']
  
  
  class ImageOptionsWidget(QtWidgets.QWidget):
  
      def __init__(self, viewer_state, session, parent=None):
  
          super(ImageOptionsWidget, self).__init__(parent=parent)
  
          self.ui = load_ui('options_widget.ui', self,
                            directory=os.path.dirname(__file__))
  
          fix_tab_widget_fontsize(self.ui.tab_widget)
  
          autoconnect_callbacks_to_qt(viewer_state, self.ui)
          autoconnect_callbacks_to_qt(viewer_state, self.ui.axes_editor.ui)
  
          self.viewer_state = viewer_state
  
          self.slice_helper = MultiSliceWidgetHelper(viewer_state=self.viewer_state,
                                                     layout=self.ui.layout_slices)
  
          self.session = session
          self.ui.axes_editor.button_apply_all.clicked.connect(self._apply_all_viewers)
  
      def _apply_all_viewers(self):
          for tab in self.session.application.viewers:
              for viewer in tab:
                  if isinstance(viewer.state, MatplotlibDataViewerState):
                      viewer.state.update_axes_settings_from(self.viewer_state)
  