          super().__init__(parent)
          self.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
  
          self.options = options
  
          self.header_text = header_text
          self.group_frames = dict()
  
 
</s> remove     def __init__(self, parent, options, items_per_row=1, radio_columns=4, header_text=None):
        logger.debug("Initializing %s: (parent: '%s', options: %s, items_per_row: %s, "
                     "radio_columns: %s, header_text: %s)",
                     self.__class__.__name__, parent, options, items_per_row, radio_columns,
                     header_text)
 </s> add     def __init__(self, parent, options, label_width=20, columns=1, radio_columns=4,
                 header_text=None, blank_nones=True):
        logger.debug("Initializing %s: (parent: '%s', options: %s, label_width: %s, columns: %s, "
                     "radio_columns: %s, header_text: %s, blank_nones: %s)",
                     self.__class__.__name__, parent, options, label_width, columns, radio_columns,
                     header_text, blank_nones) </s> remove                                      self.plugin_info[plugin])
 </s> add                                      header_text=self.plugin_info[plugin],
                                     **panel_kwargs) </s> remove         self.optsframe = ttk.Frame(self.canvas)
        self.optscanvas = self.canvas.create_window((0, 0), window=self.optsframe, anchor=tk.NW)
 </s> add         self.mainframe, self.optsframe = self.get_opts_frame()
        self.optscanvas = self.canvas.create_window((0, 0), window=self.mainframe, anchor=tk.NW) </s> remove     def build_panel(self, radio_columns):
 </s> add     def get_opts_frame(self):
        """ Return an autofill container for the options inside a main frame """
        mainframe = ttk.Frame(self.canvas)
        if self.header_text is not None:
            self.add_info(mainframe)
        optsframe = ttk.Frame(mainframe)
        optsframe.pack(expand=True, fill=tk.BOTH)
        holder = AutoFillContainer(optsframe, self.columns)
        logger.debug("Opts frames: '%s'", holder)
        return mainframe, holder

    def add_info(self, frame):
        """ Plugin information """
        gui_style = ttk.Style()
        gui_style.configure('White.TFrame', background='#FFFFFF')
        gui_style.configure('Header.TLabel', background='#FFFFFF', font=("", 9, "bold"))
        gui_style.configure('Body.TLabel', background='#FFFFFF', font=("", 9))

        info_frame = ttk.Frame(frame, style='White.TFrame', relief=tk.SOLID)
        info_frame.pack(fill=tk.X, side=tk.TOP, expand=True, padx=10, pady=10)
        label_frame = ttk.Frame(info_frame, style='White.TFrame')
        label_frame.pack(padx=5, pady=5, fill=tk.X, expand=True)
        for idx, line in enumerate(self.header_text.splitlines()):
            if not line:
                continue
            style = "Header.TLabel" if idx == 0 else "Body.TLabel"
            info = ttk.Label(label_frame, text=line, style=style, anchor=tk.W)
            info.pack(fill=tk.X, padx=0, pady=0, expand=True, side=tk.TOP)
        info.bind("<Configure>", adjust_wraplength)

    def build_panel(self, radio_columns, blank_nones):
        self.label_width = label_width
        self.columns = columns
        self.radio_columns = radio_columns
          super().__init__(parent)
          self.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
  
          self.options = options
        self.label_width = label_width
        self.columns = columns
        self.radio_columns = radio_columns
  
          self.header_text = header_text
          self.group_frames = dict()
  
keep keep keep add keep keep keep keep
 GUI Update


- Launch in fullscreen
- Expand Control Helper. Clean up config popup
- Standardize and overhaul GUI for CliOpts 
lib/gui/control_helper.py