class_docstr: Display a dialog for configuring readers
  
  The dialog handles fetching current defaults and setting the
  defaults when the user hits OK.
class_docstr_tok: ["Display","a","dialog","for","configuring","readers","The","dialog","handles","fetching","current","defaults","and","setting","the","defaults","when","the","user","hits","OK","."]
code: def display_nonfunctional_reader(self, selected):
      self.reset_control_frame()
      reader_name = selected
      error = BAD_READERS[reader_name]
      nm = wx.StaticText(self.control_panel, label=reader_name)
      nm.SetFont(self.header_font)
      self.control_sizer.Add(nm, 0, wx.ALIGN_CENTER_HORIZONTAL)
      self.control_sizer.AddSpacer(10)
      text_chunk = AutoWrapStaticText(
          self.control_panel, label="Reader failed to load"
      )
      text_chunk.SetForegroundColour((255, 0, 0))
      text_chunk.SetFont(self.header_font)
      self.control_sizer.Add(text_chunk, 0, wx.EXPAND)
      self.control_sizer.AddSpacer(5)
  
      err_header = wx.StaticText(self.control_panel)
      err_header.SetLabelMarkup("<b>Error Trace:</b>")
      self.control_sizer.Add(err_header)
      self.control_sizer.AddSpacer(5)
      trace_text = AutoWrapStaticText(self.control_panel, label=error)
      self.control_sizer.Add(trace_text)
  
      def copy_handler(event):
          if wx.TheClipboard.Open():
              wx.TheClipboard.SetData(wx.TextDataObject(error))
              wx.TheClipboard.Close()
          else:
              LOGGER.error("Failed to copy to clipboard")
  
      copy_button = wx.Button(
          self.control_panel, -1, "Copy to clipboard"
      )
      self.Bind(wx.EVT_BUTTON, copy_handler, copy_button)
      self.control_sizer.Add(copy_button, 0, wx.ALIGN_RIGHT, 5)
  
      self.control_sizer.Layout()
  
file_path: CellProfiler/src/frontend/cellprofiler/gui/readers_dialog/_readers_dialog.py
imports: import logging
  import textwrap
  import wx
  import wx.lib.scrolledpanel
  from wx.lib.agw.infobar import AutoWrapStaticText
  from cellprofiler_core.preferences import config_write_typed, config_read_typed
  from cellprofiler_core.reader import activate_readers
  from cellprofiler_core.constants.reader import ALL_READERS, BAD_READERS, AVAILABLE_READERS
  from ..html.utils import rst_to_html_fragment
  from ..htmldialog import HTMLDialog
label_desc: Use image node_id 5 for calling the ReadersDialog obj's underlying member method code with example usage: obj.display_nonfunctional_reader(selected) without return types