          label.configure(wraplength=event.width - 1)
  
      def get_opts_frame(self):
          """ Return an auto-fill 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, name="opts_frame")
          optsframe.pack(expand=True, fill=tk.BOTH)
          holder = AutoFillContainer(optsframe, self.columns)
 
</s> remove         holder = AutoFillContainer(optsframe, self.columns)
 </s> add         holder = AutoFillContainer(optsframe, self.columns, self.max_columns) </s> remove         if self.normalize_method is None:
 </s> add         if self._normalize_method is None: </s> remove         holder = AutoFillContainer(chk_frame, self.option_columns)
 </s> add         holder = AutoFillContainer(chk_frame, self.option_columns, self.option_columns) </s> remove         self.canvas.config(yscrollcommand=scrollbar.set)
 </s> add         self._canvas.config(yscrollcommand=scrollbar.set) </s> remove         scrollbar = ttk.Scrollbar(self, command=self.canvas.yview)
 </s> add         scrollbar = ttk.Scrollbar(self, command=self._canvas.yview)
        mainframe = ttk.Frame(self._canvas)
          label.configure(wraplength=event.width - 1)
  
      def get_opts_frame(self):
          """ Return an auto-fill 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, name="opts_frame")
          optsframe.pack(expand=True, fill=tk.BOTH)
          holder = AutoFillContainer(optsframe, self.columns)
keep keep keep keep replace keep keep keep keep keep
 Core updates (#982)

* plugins.extract.align
  - Expose normalization method

* lib.gui core updates
  - Minor updates to support future development. 
lib/gui/control_helper.py