          self.filebrowser = None
  
          self.frame = self.control_frame(parent)
          self.chkbtns = checkbuttons_frame
          self.control = self.set_control(dtype, choices, is_radio)
          self.tk_var = self.set_tk_var(dtype, selected_value, blank_nones)
  
          self.build_control(choices,
                             dtype,
                             rounding,
                             min_max,
                             sysbrowser,
                             option_columns,
                             control_width)
          logger.debug("Initialized: %s", self.__class__.__name__)
  
      # Frame, control type and varable
      def control_frame(self, parent):
          """ Frame to hold control and it's label """
 
</s> remove         frame = ttk.Frame(parent, name="fr_{}".format(self.title.lower()))
 </s> add         frame = ttk.Frame(parent, name="fr_{}".format(self.option.name)) </s> remove         logger.debug("Setting tk variable: (title: '%s', dtype: %s, selected_value: %s, "
                     "blank_nones: %s)",
                     self.title, dtype, selected_value, blank_nones)
        if dtype == bool:
            var = tk.BooleanVar
        elif dtype == int:
            var = tk.IntVar
        elif dtype == float:
            var = tk.DoubleVar
        else:
            var = tk.StringVar
        var = var(self.frame)
        val = self.default if selected_value is None else selected_value
        val = "" if val is None and blank_nones else val
        var.set(val)
        logger.debug("Set tk variable: (title: '%s', type: %s, value: '%s')",
                     self.title, type(var), val)
        return var
 </s> add         val = "" if self.option.value is None and blank_nones else self.option.value
        self.option.tk_var.set(val)
        logger.debug("Set tk variable: (option: '%s', variable: %s, value: '%s')",
                     self.option.name, self.option.tk_var, val) </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: </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         self.action_option = sysbrowser_dict.get("action_option", None)
 </s> add         self.action_option = self.format_action_option(sysbrowser_dict.get("action_option", None))
        self.set_tk_var(blank_nones)
        self.build_control()
          self.filebrowser = None
  
          self.frame = self.control_frame(parent)
          self.chkbtns = checkbuttons_frame
        self.set_tk_var(blank_nones)
        self.build_control()
        self.set_tk_var(blank_nones)
        self.build_control()
        self.set_tk_var(blank_nones)
        self.build_control()
        self.set_tk_var(blank_nones)
        self.build_control()
        self.set_tk_var(blank_nones)
        self.build_control()
        self.set_tk_var(blank_nones)
        self.build_control()
        self.set_tk_var(blank_nones)
        self.build_control()
        self.set_tk_var(blank_nones)
        self.build_control()
        self.set_tk_var(blank_nones)
        self.build_control()
        self.set_tk_var(blank_nones)
        self.build_control()
          logger.debug("Initialized: %s", self.__class__.__name__)
  
      # Frame, control type and varable
      def control_frame(self, parent):
          """ Frame to hold control and it's label """
keep keep keep keep replace replace replace 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