              If this is a 'master' group frame then returns a standard frame. If this is any
              other group, then will return the ToggledFrame for that group
          """
          group = group.lower()
          lookup = "settings_popup" if self._style.startswith("SPanel") else "control_panel"
          theme = get_config().user_theme[lookup]
  
          if self.group_frames.get(group, None) is None:
              logger.debug("Creating new group frame for: %s", group)
              is_master = group == "_master"
              opts_frame = self.optsframe.subframe
 
</s> remove                 group_frame = ttk.Frame(opts_frame)
 </s> add                 group_frame = ttk.Frame(opts_frame, style=f"{self._style}.Group.TFrame") </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") </s> remove         self._style = "" if style is None else f"{style}."
 </s> add         self._theme = get_config().user_theme["group_panel"]
        if self._style.startswith("SPanel"):
            self._theme = {**self._theme, **get_config().user_theme["group_settings"]} </s> remove         lookup = "settings_popup" if self._style.startswith("SPanel") else "control_panel"
        theme = get_config().user_theme[lookup]
        canvas_kwargs = dict(bd=0, highlightthickness=0, bg=theme["secondary_color"])
 </s> add         canvas_kwargs = dict(bd=0, highlightthickness=0, bg=self._theme["panel_background"]) </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",

              If this is a 'master' group frame then returns a standard frame. If this is any
              other group, then will return the ToggledFrame for that group
          """
          group = group.lower()


  
          if self.group_frames.get(group, None) is None:
              logger.debug("Creating new group frame for: %s", group)
              is_master = group == "_master"
              opts_frame = self.optsframe.subframe
keep keep keep keep 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/control_helper.py