Source code for GUIBRUSHR.GUI.Input_Output_Panels.Input_Panels.InputPanel

"""
Input Panel Module

This module defines the InputPanel class which serves as the main container for all input-related panels
in the GUI application. It manages multiple tab panels for different input functionalities.
"""

from GUIBRUSHR.GUI.Input_Output_Panels.Input_Panels.TabPanels.FrameCCNIght.FrameCCNight import FrameCCNight
from GUIBRUSHR.GUI.Input_Output_Panels.Input_Panels.TabPanels.FrameGenerationHRData.FrameGenerationHRData import \
    FrameGenerationHRData
from GUIBRUSHR.GUI.LAYOUT.MyPanel import MyPanel
from GUIBRUSHR.GUI.LAYOUT.MyTabPanel import MyTabPanel
from GUIBRUSHR.GUI.Input_Output_Panels.Input_Panels.TabPanels.FramePath.FramePath import FramePath
from GUIBRUSHR.GUI.Input_Output_Panels.Input_Panels.TabPanels.FrameTellRem.FrameTellRem import FrameTellRem
from GUIBRUSHR.GUI.Input_Output_Panels.Input_Panels.TabPanels.Frame_Parameters.FrameParameter import FrameParameter
from GUIBRUSHR.GUI.Input_Output_Panels.Input_Panels.TabPanels.FrameManualModel.FrameManualModel import FrameManualModel
from GUIBRUSHR.GUI.Input_Output_Panels.Input_Panels.TabPanels.Frame_Retrieval_Analysis.FrameRetrievalAnalysis import FrameRetrievalAnalysis
from GUIBRUSHR.General_Constants.FunctionsAndConstants.Constant_Variables import ConstantVariables
from GUIBRUSHR.GUI.Input_Output_Panels.Input_Panels.TabPanels.FrameDBInteractions.FrameDBInteractions import FrameDBInteractions
from GUIBRUSHR.GUI.DataInterface.DataInterface import get_target_list


[docs] class InputPanel(MyPanel): """ A panel class that manages multiple input-related tab panels in the GUI application. This class inherits from MyPanel and serves as a container for various input panels organized in tabs. Each tab represents a different input functionality of the application. Attributes: width_GUI (int): Width of the GUI panel parent: Parent widget of the panel path_default (str): Default path for file operations tab_manager (MyTabPanel): Manager for the tab panels frame_path (FramePath): Panel for path-related inputs frame_parameter (FrameParameter): Panel for parameter inputs frame_retrieval_analysis (FrameRetrievalAnalysis): Panel for retrieval analysis frame_tell_rem (FrameTellRem): Panel for TellRem functionality frame_manual_model (FrameManualModel): Panel for manual model inputs frame_cc_night (FrameCCNight): Panel for CC night functionality frame_simulation_HR (FrameGenerationHRData): Panel for HR data simulation frame_db_interactions (FrameDBInteractions): Panel for database interactions """
[docs] def __init__(self, parent, row, column, color, path_default, width_GUI, height_frame, window, **kwargs): """ Initialize the InputPanel with its components and layout. Args: parent: Parent widget row (int): Row position in the grid column (int): Column position in the grid color (str): Background color of the panel path_default (str, Path): Default path for file operations width_GUI (int): Width of the GUI panel height_frame (int): Height of the frame window: Main window instance **kwargs: Additional keyword arguments passed to the parent class """ # Initialize parent class super().__init__(window, color, row, column, width=width_GUI, height=height_frame, **kwargs) # Store instance variables self.width_GUI = width_GUI self.parent = parent self.path_default = path_default # Initialize tab manager with predefined tab list self.tab_manager = MyTabPanel( parent=self, tab_list=ConstantVariables.LIST_TAB_MACRO, row=0, column=0, width=width_GUI + 100 ) # Initialize all frame panels self._initialize_frame_panels(window, width_GUI, height_frame)
def _initialize_frame_panels(self, window, width_GUI, height_frame): """ Initialize all frame panels with their respective configurations. Args: window: Main window instance width_GUI (int): Width of the GUI panel height_frame (int): Height of the frame """ # Path frame panel self.frame_path = FramePath( self.tab_manager.tab_list[0], 0, 1, ConstantVariables.COLOR_SUB_NOTEBOOK, self.path_default, self, width_GUI, int(height_frame) ) # Parameter frame panel self.frame_parameter = FrameParameter( self.tab_manager.tab_list[1], 0, 1, ConstantVariables.COLOR_SUB_NOTEBOOK, self.path_default, self ) # Retrieval analysis frame panel self.frame_retrieval_analysis = FrameRetrievalAnalysis( self.tab_manager.tab_list[2], 0, 1, ConstantVariables.COLOR_SUB_NOTEBOOK, self.path_default, self, width_GUI, height_frame, window ) # TellRem frame panel self.frame_tell_rem = FrameTellRem( self.tab_manager.tab_list[3], 0, 1, ConstantVariables.COLOR_SUB_NOTEBOOK, self.path_default, self, window ) # Manual model frame panel self.frame_manual_model = FrameManualModel( self.tab_manager.tab_list[4], 0, 1, ConstantVariables.COLOR_SUB_NOTEBOOK, self.path_default, self, width_GUI, height_frame, window ) # CC Night frame panel self.frame_cc_night = FrameCCNight( self.tab_manager.tab_list[5], ConstantVariables.COLOR_SUB_NOTEBOOK, 0, 1, self.path_default, self, width_GUI, height_frame, window ) # Simulation HR frame panel self.frame_simulation_HR = FrameGenerationHRData( self.tab_manager.tab_list[6], ConstantVariables.COLOR_SUB_NOTEBOOK, 0, 1, self.path_default, self, window, width_GUI, height_frame ) # Database interactions frame panel self.frame_db_interactions = FrameDBInteractions( self.tab_manager.tab_list[7], ConstantVariables.COLOR_SUB_NOTEBOOK, 0, 1, self.path_default, self, window )
[docs] def reload_all_targets(self): """Rebuild the Target dropdown in every panel from a fresh target-folder scan. Single source of truth for the target-dropdown cascade: used both after adding a target (Frame_Target._update_after_target_add) and by the Reload Targets button in FrameReload. """ target_list = get_target_list(self.frame_path.path_folder_targets.get_text()) self.frame_db_interactions.frame_target.modify_list_target(target_list) self.frame_parameter.panel_info.modify_target_list(target_list) self.frame_tell_rem.modify_target_list(target_list) self.frame_manual_model.modify_target_list(target_list) self.frame_cc_night.modify_target_list(target_list) self.frame_simulation_HR.modify_target_list(target_list) self.frame_retrieval_analysis.frame_filter_table.frame_filter.modify_target_list(target_list)
[docs] def reload_all_opacities(self): """Rebuild every molecule/opacity dropdown from a fresh petitRADTRANS scan. Covers the retrieval Parameters panel and the Forward Model panel. Each panel rebuilds its own molecule rows coherently (same placement and callbacks as the initial load); selection resets to the first entry. """ self.frame_parameter.panel_param.reload_opacities() self.frame_manual_model.reload_opacities()