          if any(plugin != category for plugin in plugins):
              page = ttk.Notebook(container)
              page.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
              for plugin in plugins:
                  cp_options = [opt for opt in self.config_cpanel_dict[category][plugin].values()]
                  frame = ControlPanel(page,
                                       cp_options,
                                       header_text=self.plugin_info[plugin],
                                       **panel_kwargs)
                  title = plugin[plugin.rfind(".") + 1:]
 
</s> remove         panel_kwargs = dict(columns=2, option_columns=2, blank_nones=False)
 </s> add         panel_kwargs = dict(columns=2, max_columns=2, option_columns=2, blank_nones=False) </s> remove             cp_options = [opt for opt in self.config_cpanel_dict[category][plugins[0]].values()]
 </s> add             cp_options = list(self.config_cpanel_dict[category][plugins[0]].values()) </s> remove         self.canvas = tk.Canvas(self, bd=0, highlightthickness=0)
        self.canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
 </s> add         self._canvas = tk.Canvas(self, bd=0, highlightthickness=0)
        self._canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) </s> remove         self.optscanvas = self.canvas.create_window((0, 0), window=self.mainframe, anchor=tk.NW)

        self.build_panel(blank_nones)
 </s> add         self._optscanvas = self._canvas.create_window((0, 0), window=self.mainframe, anchor=tk.NW)
        self.build_panel(blank_nones, scrollbar) </s> remove         self.add_scrollbar()
        self.canvas.bind("<Configure>", self.resize_frame)
 </s> add         if scrollbar:
            self.add_scrollbar()
        self._canvas.bind("<Configure>", self.resize_frame)
                cp_options = list(self.config_cpanel_dict[category][plugin].values())
          if any(plugin != category for plugin in plugins):
              page = ttk.Notebook(container)
              page.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
              for plugin in plugins:
                cp_options = list(self.config_cpanel_dict[category][plugin].values())
                  frame = ControlPanel(page,
                                       cp_options,
                                       header_text=self.plugin_info[plugin],
                                       **panel_kwargs)
                  title = plugin[plugin.rfind(".") + 1:]
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/popup_configure.py