1313from PyQt6 .QtCore import pyqtSlot as Slot
1414from PyQt6 .QtWidgets import (
1515 QApplication ,
16- QButtonGroup ,
1716 QDialog ,
1817 QHBoxLayout ,
1918 QLabel ,
2019 QMainWindow ,
21- QRadioButton ,
2220 QSplitter ,
2321 QStyle ,
2422 QTabWidget ,
6058from .utils .qt_creator import create_group_box , create_group_layout , create_side_panel
6159from .widgets .data_type_keys_widget import DataTypeKeysWidget
6260from .widgets .everest_control_selection_widget import EverestControlSelectionWidget
63- from .widgets .plot_controls . misfits_options import MisfitsOptions
61+ from .widgets .plot_controls import EverestControlsPlotOptions , MisfitsOptions
6462from .widgets .plot_ensemble_selection_widget import EnsembleSelectionWidget
6563from .widgets .plot_widget import Plotter , PlotWidget
6664
@@ -322,26 +320,8 @@ def __init__(
322320 create_group_layout ([self ._ensemble_selection_widget ]),
323321 )
324322
325- self ._display_over_batches_radio = QRadioButton ("batches" )
326- self ._display_over_batches_radio .setObjectName ("display_over_batches_radio" )
327- self ._display_over_batches_radio .setChecked (True )
328- self ._display_over_controls_radio = QRadioButton ("controls" )
329- self ._display_over_controls_radio .setObjectName (
330- "display_over_controls_radio"
331- )
332- self ._display_over_button_group = QButtonGroup (self )
333- self ._display_over_button_group .addButton (self ._display_over_batches_radio )
334- self ._display_over_button_group .addButton (self ._display_over_controls_radio )
335- self ._display_over_button_group .buttonClicked .connect (self .updatePlot )
336-
337- self ._display_over_group = create_group_box (
338- "X-axis:" ,
339- create_group_layout (
340- [
341- self ._display_over_batches_radio ,
342- self ._display_over_controls_radio ,
343- ]
344- ),
323+ self ._everest_controls_plot_options = EverestControlsPlotOptions (
324+ self .updatePlot
345325 )
346326
347327 self ._misfits_options = MisfitsOptions (self .updatePlot )
@@ -350,15 +330,15 @@ def __init__(
350330 right_layout = create_group_layout (
351331 [
352332 self ._ensemble_group ,
353- self ._display_over_group ,
333+ self ._everest_controls_plot_options . get_widget () ,
354334 self ._everest_controls_group ,
355335 self ._misfits_options .get_widget (),
356336 ]
357337 )
358338 right_container .setLayout (right_layout )
359339
360340 self ._everest_controls_group .setVisible (False )
361- self ._display_over_group .setVisible (False )
341+ self ._everest_controls_plot_options . get_widget () .setVisible (False )
362342 self ._misfits_options .get_widget ().setVisible (False )
363343 self ._data_type_keys_widget .selectDefault ()
364344
@@ -436,7 +416,7 @@ def updatePlot(self, layer: int | None = None) -> None:
436416
437417 is_everest_ensemble = plot_widget .name == ENSEMBLE and self .is_everest
438418 self ._everest_controls_group .setVisible (is_gradient_plot or is_controls_plot )
439- self ._display_over_group .setVisible (is_controls_plot )
419+ self ._everest_controls_plot_options . get_widget () .setVisible (is_controls_plot )
440420 self ._ensemble_selection_widget .apply_ensemble_filtering (
441421 require_func_eval = is_objective_plot
442422 or is_everest_ensemble
@@ -576,7 +556,9 @@ def fetch_data(
576556 key ,
577557 layer ,
578558 )
579- plot_context .by_batch = self ._display_over_batches_radio .isChecked ()
559+ plot_context .by_batch = (
560+ self ._everest_controls_plot_options .is_batches_selected ()
561+ )
580562
581563 plot_context .scatter_plot = self ._misfits_options .scatter_checkbox_state
582564 plot_context .box_plot = self ._misfits_options .box_checkbox_state
0 commit comments