          to bind it to the right click button
          """
          button = "<Button-2>" if platform.system() == "Darwin" else "<Button-3>"
          logger.debug("Binding '%s' to '%s'", button, self._widget.winfo_class())
          scaling_factor = get_config().scaling_factor if get_config() is not None else 1.0
          x_offset = int(34 * scaling_factor)
          self._widget.bind(button,
                            lambda event: self.tk_popup(event.x_root + x_offset, event.y_root, 0))
  
      def _select_all(self):
          """ Select all for Text or Entry widgets """
          logger.debug("Selecting all for '%s'", self._widget.winfo_class())
          if self._widget.winfo_class() == "Text":
 
</s> remove         logger.trace("Requested color format '%s' for frame '%s'", colorformat, self._filename)
        image = getattr(self, "_image_as_{}".format(colorformat.lower()))()
 </s> add         logger.trace("Requested color format '%s' for frame '%s'", color_format, self._filename)
        image = getattr(self, "_image_as_{}".format(color_format.lower()))() </s> remove         holder = AutoFillContainer(optsframe, self.columns)
 </s> add         holder = AutoFillContainer(optsframe, self.columns, self.max_columns) </s> remove         self.statusbar.status_message.set("Executing - {}.py".format(self.command))
 </s> add         self.statusbar.message.set("Executing - {}.py".format(self.command)) </s> remove         mainframe = ttk.Frame(self.canvas)
 </s> add         mainframe = ttk.Frame(self._canvas)
        self._widget.bind(button, lambda event: self.tk_popup(event.x_root, event.y_root))
          to bind it to the right click button
          """
          button = "<Button-2>" if platform.system() == "Darwin" else "<Button-3>"
          logger.debug("Binding '%s' to '%s'", button, self._widget.winfo_class())
        self._widget.bind(button, lambda event: self.tk_popup(event.x_root, event.y_root))
        self._widget.bind(button, lambda event: self.tk_popup(event.x_root, event.y_root))
        self._widget.bind(button, lambda event: self.tk_popup(event.x_root, event.y_root))
        self._widget.bind(button, lambda event: self.tk_popup(event.x_root, event.y_root))
  
      def _select_all(self):
          """ Select all for Text or Entry widgets """
          logger.debug("Selecting all for '%s'", self._widget.winfo_class())
          if self._widget.winfo_class() == "Text":
keep keep keep keep replace replace replace 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/custom_widgets.py