code: def __win_callback(self, obj, event):
      if self.__win_size != obj.GetSize():
          self.__win_size = obj.GetSize()
          if len(self.__tabs) > 0:
              self.__tab_mgr.reposition(self.__win_size)
          if self.cluster:
              if self.__help_visible:
                  panel_size = self.help_panel._get_size()
                  new_pos = np.array(self.__win_size) - panel_size - 5
              else:
                  new_pos = np.array(self.__win_size) - 10
              self.help_panel._set_position(new_pos)
  
imports: from packaging.version import Version
  import warnings
  import numpy
  from dipy import __version__
  from dipy.io.stateful_tractogram import Space, StatefulTractogram
  from dipy.io.streamline import save_tractogram
  from dipy.tracking.streamline import Streamlines
  from dipy.utils.optpkg import optional_package
  from dipy.viz.gmem import GlobalHorizon
  from dipy.viz.horizon.tab import ClustersTab, PeaksTab, ROIsTab, SlicesTab, TabManager, build_label
  from dipy.viz.horizon.visualizer import ClustersVisualizer, SlicesVisualizer
  from dipy.viz.horizon.util import check_img_dtype, check_img_shapes
label_desc: Use image node_id 10 for calling the Horizon obj's underlying member method code with example usage: obj.__win_callback(obj, event) without return types