6767from .widgets .plot_ensemble_selection_widget import EnsembleSelectionWidget
6868from .widgets .plot_widget import Plotter , PlotWidget
6969
70- RESPONSE_DEFAULT = 0
71- GEN_KW_DEFAULT = 3
72- STD_DEV_DEFAULT = 7
73-
7470EVEREST_UPPER_BATCH_LIMIT = 20
7571
7672logger = logging .getLogger (__name__ )
@@ -232,23 +228,20 @@ def __init__(
232228 self ._central_tab .currentChanged .connect (self .current_tab_changed )
233229 self .log_plot_tab_usage (self ._central_tab .tabText (0 ), default = True )
234230
235- self ._prev_tab_widget_index = - 1
236- self ._current_tab_index = - 1
237231 self ._prev_key_dimensionality = - 1
238232 self ._prev_key : str | None = None
239233 self ._prev_key_origin : str | None = None
240- self ._prev_tab_widget_index_map : dict [int , int ] = {}
241234 if self .is_everest :
242- self ._prev_tab_widget_index_map = {
243- 1 : 0 ,
244- 2 : 1 ,
245- 3 : 0 , # Fallback
235+ self ._default_tab_for_dimensionality = {
236+ 1 : self . _widget_by_name ( ENSEMBLE ) ,
237+ 2 : self . _widget_by_name ( EVEREST_BATCH_OBJECTIVE_FUNCTION_PLOT ) ,
238+ 3 : self . _widget_by_name ( ENSEMBLE ) , # Fallback
246239 }
247240 else :
248- self ._prev_tab_widget_index_map = {
249- 2 : RESPONSE_DEFAULT ,
250- 1 : GEN_KW_DEFAULT ,
251- 3 : STD_DEV_DEFAULT ,
241+ self ._default_tab_for_dimensionality = {
242+ 1 : self . _widget_by_name ( HISTOGRAM ) ,
243+ 2 : self . _widget_by_name ( ENSEMBLE ) ,
244+ 3 : self . _widget_by_name ( STD_DEV ) ,
252245 }
253246
254247 QApplication .setOverrideCursor (Qt .CursorShape .WaitCursor )
@@ -356,7 +349,6 @@ def get_plot_api_version(self) -> str:
356349
357350 @Slot (int )
358351 def current_tab_changed (self , index : int ) -> None :
359- self ._current_tab_index = index
360352 self .update_plot ()
361353 self .log_plot_tab_usage (self ._central_tab .tabText (index ))
362354
@@ -665,6 +657,15 @@ def add_plot_widget(
665657 self ._plot_widgets .append (plot_widget )
666658 self ._central_tab .setTabEnabled (index , enabled )
667659
660+ def _find_widget_by_name (self , name : str ) -> PlotWidget | None :
661+ return next ((w for w in self ._plot_widgets if w .name == name ), None )
662+
663+ def _widget_by_name (self , name : str ) -> PlotWidget :
664+ widget = self ._find_widget_by_name (name )
665+ if widget is None :
666+ raise ValueError (f"No plot tab named '{ name } '" )
667+ return widget
668+
668669 def _edit_axis_label (self , axis : str ) -> None :
669670 label_names = {"x" : "x-label" , "y" : "y-label" }
670671 if axis not in label_names :
@@ -772,12 +773,6 @@ def keySelected(self) -> None:
772773 def everest_data_origin_check (origin : list [str ]) -> bool :
773774 return key_def .metadata .get ("data_origin" ) in origin
774775
775- def everest_widget_locator (widget_name : str ) -> PlotWidget | None :
776- return next (
777- (w for w in self ._plot_widgets if w .name == widget_name ),
778- None ,
779- )
780-
781776 everest_plot_and_origin = [
782777 (EVEREST_OBJECTIVE_FUNCTION_PLOT , ["everest_objectives" ]),
783778 (EVEREST_BATCH_OBJECTIVE_FUNCTION_PLOT , ["everest_batch_objectives" ]),
@@ -790,15 +785,17 @@ def everest_available_widget_selection(
790785 widget_tuple_list : list [tuple [str , list [str ]]],
791786 ) -> None :
792787 for widget_name , origin in widget_tuple_list :
793- widget = everest_widget_locator (widget_name )
794- if widget :
795- if everest_data_origin_check (origin ):
796- if widget not in available_widgets :
797- available_widgets .append (widget )
798- elif widget in available_widgets :
799- available_widgets .remove (widget )
788+ widget = self ._widget_by_name (widget_name )
789+ if everest_data_origin_check (origin ):
790+ if widget not in available_widgets :
791+ available_widgets .append (widget )
792+ elif widget in available_widgets :
793+ available_widgets .remove (widget )
800794
801- everest_available_widget_selection (everest_plot_and_origin )
795+ if self .is_everest :
796+ everest_available_widget_selection (everest_plot_and_origin )
797+
798+ previous_widget = self ._central_tab .currentWidget ()
802799
803800 # Enabling/disabling tab triggers the
804801 # current_tab_changed event which also triggers
@@ -814,22 +811,19 @@ def everest_available_widget_selection(
814811 current_widget = self ._central_tab .currentWidget ()
815812
816813 if 0 < self ._prev_key_dimensionality != key_def .dimensionality :
817- if self ._current_tab_index == - 1 :
818- self ._current_tab_index = self ._prev_tab_widget_index
819- self ._prev_tab_widget_index_map [self ._prev_key_dimensionality ] = (
820- self ._current_tab_index
821- )
822- current_widget = self ._central_tab .widget (
823- self ._prev_tab_widget_index_map [key_def .dimensionality ]
824- )
825- self ._current_tab_index = - 1
814+ if isinstance (previous_widget , PlotWidget ):
815+ self ._default_tab_for_dimensionality [self ._prev_key_dimensionality ] = (
816+ previous_widget
817+ )
818+ current_widget = self ._default_tab_for_dimensionality [
819+ key_def .dimensionality
820+ ]
826821
827822 if current_widget not in available_widgets and available_widgets :
828823 current_widget = available_widgets [0 ]
829824
830825 self ._central_tab .setCurrentWidget (current_widget )
831826 self ._central_tab .currentChanged .connect (self .current_tab_changed )
832- self ._prev_tab_widget_index = self ._central_tab .currentIndex ()
833827 self ._prev_key_dimensionality = key_def .dimensionality
834828 self ._prev_key = key_def .key
835829 self ._prev_key_origin = key_def .metadata .get ("data_origin" )
0 commit comments