                                    font=(self._font[0], self._font[1], "bold"))
  
              self._config_settings_group_slider(key, theme)
  
      @classmethod
      def _set_img_color(cls, img, color):
          """Change color of PhotoImage image."""
          pixel_line = "{" + " ".join(color for i in range(img.width())) + "}"
          pixels = " ".join(pixel_line for i in range(img.height()))
          img.put(pixels)
  
      def _config_settings_group_slider(self, key, theme):
          """ Take a copy of the default ttk.Scale widget and replace the slider element with a
          version we can control the color and shape of.
  
 
</s> remove             self._config_settings_group_slider(key, theme)
 </s> add         Parameters
        ----------
        key: str
            The section that the slider will belong to
        theme: dict
            The user configuration theme options
        """
        # Put a border on a group's sub-frame
        self._style.element_create(f"{key}.Subframe.Group.Frame.border", "from", "alt")
        self._style.layout(f"{key}.Subframe.Group.TFrame",
                           [(f"{key}.Subframe.Group.Frame.border", {"sticky": "nswe"})])
        self._style.configure(f"{key}.Subframe.Group.TFrame",
                              background=theme["group_background"],
                              relief=tk.SOLID,
                              borderwidth=1,
                              bordercolor=theme["group_border"]) </s> remove {   
    "group_box": {
        "background": "#FFFFFF",
        "font_color": "#000000",
        "input_color": "#FFFFFF",
        "input_font": "#000000"        
    },
    "control_panel": {
 </s> add {
    "info": "Initial default theme configuration whilst migrating from default ttk OS widgets",
    "group_panel": {
        "info": {
            "info1": "The 'group_panel' section are any section which contains items for user input, such as the left hand options panel in the main GUI or the Settings pop-up",
            "info2": "Anything which uses a 'group_panel' will use the theme specified here as default. Panels can be overriden (see below).",

            "panel_background": "The background color of the main panel that holds all of the group options.",

            "info_color": "The background color of the information header box at the top of each control panel",
            "info_font": "The color of the font inside the information header box at the top of each control panel",
            "info_border": "The color of the border around the outside of the information header box at the top of each control panel",

            "header_color": "The color to use for the option group boxes header backgrounds, the group box border and for labels on options groups.",
            "header_font": "The color to use for the option group boxes header font.",
            "group_background": "This is the color used for the background of each group of options, as well as the background color used for any label which resides inside a group box",
            "group_font": "The font color used inside each group box for labels",

            "control_color": "The color of controls (e.g. Slider knob, combo pull-down arrow, scrollbar slider + arrows etc.)",
            "control_active": "Selected/hovered over color of controls (e.g. Slider knob, combo pull-down arrow, scrollbar slider + arrows etc.)",
            "control_disabled": "The color of controls when they are disabled (specifically scrollbars when there is no page to scroll).",

            "input_color": "The background color of input boxes (e.g. text entry)",
            "input_font": "The font color of input boxes (e.g. text entry)",
            "button_background": "The background color of buttons",

            "scrollbar_border": "Border color of scrollbar",
            "scrollbar_trough": "Trough color of scrollbar"
            },
        "panel_background": "#CDD3D5",

        "info_color": "#FFFFFF",
        "info_font": "#000000",
        "info_border": "#000000",
 </s> remove     "settings_popup": {
 </s> add     "group_settings": {
        "info": {"info1": "Override default colors for the settings pop-up. See 'group_panel' for allowable options",
                 "info2": "Options same as 'group_panel' with the following additions:",

                "tree_select": "The color of the selected item in the left hand nav frame",
                "link_color": "The color of links on pages where there are no configuration options"
                },
        "panel_background": "#DAD2D8",
 </s> remove         """ Set a trace on the consoleclear tkinter variable to trigger :func:`_clear` """
 </s> add         """ Set a trace on the console clear tkinter variable to trigger :func:`_clear` """ </s> remove         chk_frame = ttk.Frame(frame, name="chkbuttons", style="Group.TFrame")
 </s> add         chk_frame = ttk.Frame(frame, name="chkbuttons", style=f"{self._style}Group.TFrame")
        # Background and Foreground of widgets and labels
        for lbl in ["TLabel", "TFrame", "TLabelframe", "TCheckbutton", "TRadiobutton",
                    "TLabelframe.Label"]:
            self._style.configure(f"{key}.Group.{lbl}",
                                  background=theme["group_background"],
                                  foreground=theme["group_font"])
                                    font=(self._font[0], self._font[1], "bold"))
  
              self._config_settings_group_slider(key, theme)
  
        # Background and Foreground of widgets and labels
        for lbl in ["TLabel", "TFrame", "TLabelframe", "TCheckbutton", "TRadiobutton",
                    "TLabelframe.Label"]:
            self._style.configure(f"{key}.Group.{lbl}",
                                  background=theme["group_background"],
                                  foreground=theme["group_font"])
        # Background and Foreground of widgets and labels
        for lbl in ["TLabel", "TFrame", "TLabelframe", "TCheckbutton", "TRadiobutton",
                    "TLabelframe.Label"]:
            self._style.configure(f"{key}.Group.{lbl}",
                                  background=theme["group_background"],
                                  foreground=theme["group_font"])
        # Background and Foreground of widgets and labels
        for lbl in ["TLabel", "TFrame", "TLabelframe", "TCheckbutton", "TRadiobutton",
                    "TLabelframe.Label"]:
            self._style.configure(f"{key}.Group.{lbl}",
                                  background=theme["group_background"],
                                  foreground=theme["group_font"])
        # Background and Foreground of widgets and labels
        for lbl in ["TLabel", "TFrame", "TLabelframe", "TCheckbutton", "TRadiobutton",
                    "TLabelframe.Label"]:
            self._style.configure(f"{key}.Group.{lbl}",
                                  background=theme["group_background"],
                                  foreground=theme["group_font"])
        # Background and Foreground of widgets and labels
        for lbl in ["TLabel", "TFrame", "TLabelframe", "TCheckbutton", "TRadiobutton",
                    "TLabelframe.Label"]:
            self._style.configure(f"{key}.Group.{lbl}",
                                  background=theme["group_background"],
                                  foreground=theme["group_font"])
        # Background and Foreground of widgets and labels
        for lbl in ["TLabel", "TFrame", "TLabelframe", "TCheckbutton", "TRadiobutton",
                    "TLabelframe.Label"]:
            self._style.configure(f"{key}.Group.{lbl}",
                                  background=theme["group_background"],
                                  foreground=theme["group_font"])
  
      def _config_settings_group_slider(self, key, theme):
          """ Take a copy of the default ttk.Scale widget and replace the slider element with a
          version we can control the color and shape of.
  
keep keep keep keep replace replace replace replace replace replace keep keep keep keep keep
 Minor Updates
  - GUI - Tweaks
    - Fix Analysis Slider background color
    - More granular theming controls
    - Standardize comboboxes and scrollbars
  - plugins.train.model._base
      - Catch more model corruption errors 
lib/gui/utils.py