          if not self.single_column_width < width < self.max_width:
              logger.debug("width outside min/max thresholds: (min: %s, width: %s, max: %s)",
                           self.single_column_width, width, self.max_width)
              return
          range_min = self.columns * self.single_column_width
          range_max = (self.columns + 1) * self.single_column_width
          if range_min < width < range_max:
              logger.debug("width outside next step refresh threshold: (step down: %s, width: %s,"
                           "step up: %s)", range_min, width, range_max)
              return
          new_columns = width // self.single_column_width
          logger.debug("Rearranging columns: (width: %s, old_columns: %s, new_columns: %s)",
                       width, self.columns, new_columns)
          self.columns = new_columns
          if not self._widget_config:
              self.compile_widget_config()
 
</s> remove         if not self.single_column_width < width < self.max_width:
            logger.debug("width outside min/max thresholds: (min: %s, width: %s, max: %s)",
                         self.single_column_width, width, self.max_width)
 </s> add         if not self.validate(width): </s> remove     def __init__(self, parent, title, dtype, default,
                 selected_value=None, choices=None, is_radio=False, rounding=None,
                 min_max=None, sysbrowser=None, helptext=None, option_columns=3, label_width=20,
                 checkbuttons_frame=None, control_width=None, blank_nones=True):
        logger.debug("Initializing %s: (parent: %s, title: %s, dtype: %s, default: %s, "
                     "selected_value: %s, choices: %s, is_radio: %s, rounding: %s, min_max: %s, "
                     "sysbrowser: %s, helptext: %s, option_columns: %s, label_width: %s, "
                     "checkbuttons_frame: %s, control_width: %s, blank_nones: %s)",
                     self.__class__.__name__, parent, title, dtype, default, selected_value,
                     choices, is_radio, rounding, min_max, sysbrowser, helptext, option_columns,
                     label_width, checkbuttons_frame, control_width, blank_nones)

        self.title = title
        self.default = default
        self.helptext = self.format_helptext(helptext)
 </s> add     def __init__(self, parent, option, option_columns, label_width,  # pylint: disable=too-many-arguments
                 checkbuttons_frame, blank_nones):
        logger.debug("Initializing %s: (parent: %s, option: %s, option_columns: %s, "
                     "label_width: %s, checkbuttons_frame: %s, blank_nones: %s)",
                     self.__class__.__name__, parent, option, option_columns, label_width,
                     checkbuttons_frame, blank_nones)

        self.option = option
        self.option_columns = option_columns </s> remove         logger.debug("Add control to Options Frame: (title: '%s', control: %s, choices: %s)",
                     self.title, self.control, choices)
        if self.control == ttk.Checkbutton:
            ctl = self.control(self.frame, variable=self.tk_var, text=None)
 </s> add         logger.debug("Add control to Options Frame: (widget: '%s', control: %s, choices: %s)",
                     self.option.name, self.option.control, self.option.choices)
        if self.option.control == ttk.Checkbutton:
            ctl = self.option.control(self.frame, variable=self.option.tk_var, text=None) </s> remove         logger.debug("Build control: (title: '%s', control: %s, choices: %s, dtype: %s, "
                     "rounding: %s, sysbrowser: %s, min_max: %s: option_columns: %s, "
                     "control_width: %s)", self.title, self.control, choices, dtype, rounding,
                     sysbrowser, min_max, option_columns, control_width)
        if self.control == ttk.Scale:
            ctl = self.slider_control(dtype, rounding, min_max)
        elif self.control == ttk.Radiobutton:
            ctl = self.radio_control(choices, option_columns)
        elif self.control == ttk.Checkbutton:
 </s> add         logger.debug("Build control: '%s')", self.option.name)
        if self.option.control == ttk.Scale:
            ctl = self.slider_control()
        elif self.option.control == ttk.Radiobutton:
            ctl = self.radio_control()
        elif self.option.control == ttk.Checkbutton:
        new_columns = min(self.max_columns, max(1, width // self.single_column_width))
          if not self.single_column_width < width < self.max_width:
              logger.debug("width outside min/max thresholds: (min: %s, width: %s, max: %s)",
                           self.single_column_width, width, self.max_width)
              return
        new_columns = min(self.max_columns, max(1, width // self.single_column_width))
        new_columns = min(self.max_columns, max(1, width // self.single_column_width))
        new_columns = min(self.max_columns, max(1, width // self.single_column_width))
        new_columns = min(self.max_columns, max(1, width // self.single_column_width))
        new_columns = min(self.max_columns, max(1, width // self.single_column_width))
        new_columns = min(self.max_columns, max(1, width // self.single_column_width))
        new_columns = min(self.max_columns, max(1, width // self.single_column_width))
          logger.debug("Rearranging columns: (width: %s, old_columns: %s, new_columns: %s)",
                       width, self.columns, new_columns)
          self.columns = new_columns
          if not self._widget_config:
              self.compile_widget_config()
keep keep keep keep replace replace replace replace replace replace replace keep keep keep keep keep
 GUI Fixups

- GUI Bugfix: Startup options - fix min/max thresholds
- GUI Bugfix: Make console read-only
- GUI Bugfix: Rightclick menu for recreated widgets
- Enhancement: Create ControlPanelOptions Class + migrate options 
lib/gui/control_helper.py