class_docstr: View / controller for the preferences that get displayed in the main window
  
      
class_docstr_tok: ["View","\/","controller","for","the","preferences","that","get","displayed","in","the","main","window"]
code: def __init__(self, parent_sizer, panel, progress_panel, status_panel):
      self.__panel = panel
      self.__parent_sizer = parent_sizer
      panel.AutoLayout = True
      panel.SetSizer(wx.BoxSizer(wx.VERTICAL))
      static_box_sizer = wx.BoxSizer(wx.VERTICAL)
      panel.Sizer.Add(static_box_sizer, 1, wx.EXPAND)
      self.__sizer = static_box_sizer
      self.__image_folder_panel = wx.Panel(panel)
      self.__image_folder_panel.SetAutoLayout(True)
      self.__image_edit_box = self.__make_folder_panel(
          self.__image_folder_panel,
          get_default_image_directory(),
          lambda: get_recent_files(DEFAULT_IMAGE_DIRECTORY),
          "Default Input Folder",
          DEFAULT_IMAGE_FOLDER_HELP,
          [
              set_default_image_directory,
              self.__notify_pipeline_list_view_directory_change,
          ],
          refresh_action=self.refresh_input_directory,
      )
      self.__output_folder_panel = wx.Panel(panel)
      self.__output_folder_panel.SetAutoLayout(True)
      self.__output_edit_box = self.__make_folder_panel(
          self.__output_folder_panel,
          get_default_output_directory(),
          lambda: get_recent_files(DEFAULT_OUTPUT_DIRECTORY),
          "Default Output Folder",
          DEFAULT_OUTPUT_FOLDER_HELP,
          [
              set_default_output_directory,
              self.__notify_pipeline_list_view_directory_change,
          ],
      )
      self.__odds_and_ends_panel = wx.Panel(panel)
      self.__odds_and_ends_panel.SetAutoLayout(True)
      self.__make_odds_and_ends_panel()
      self.__status_panel = status_panel
      status_panel.Sizer = wx.BoxSizer()
      self.__status_text = wx.StaticText(
          status_panel, style=wx.SUNKEN_BORDER, label=WELCOME_MESSAGE
      )
      status_panel.Sizer.Add(self.__status_text, 1, wx.EXPAND)
      self.__progress_panel = progress_panel
      self.__progress_panel.AutoLayout = True
      self.__make_progress_panel()
      self.__sizer.AddMany(
          [
              (self.__image_folder_panel, 0, wx.EXPAND | wx.ALL, 1),
              (self.__output_folder_panel, 0, wx.EXPAND | wx.ALL, 1),
              (self.__odds_and_ends_panel, 0, wx.EXPAND | wx.ALL, 1),
          ]
      )
      self.show_status_text()
      self.__errors = set()
      self.__pipeline_list_view = None
      self.__progress_watcher = None
  
imports: import os
  import wx
  from cellprofiler_core.analysis import use_analysis
  from cellprofiler_core.preferences import DEFAULT_IMAGE_DIRECTORY
  from cellprofiler_core.preferences import DEFAULT_IMAGE_FOLDER_HELP
  from cellprofiler_core.preferences import DEFAULT_OUTPUT_DIRECTORY
  from cellprofiler_core.preferences import DEFAULT_OUTPUT_FOLDER_HELP
  from cellprofiler_core.preferences import add_image_directory_listener
  from cellprofiler_core.preferences import add_output_directory_listener
  from cellprofiler_core.preferences import add_progress_callback
  from cellprofiler_core.preferences import fire_image_directory_changed_event
  from cellprofiler_core.preferences import get_default_image_directory
  from cellprofiler_core.preferences import get_default_output_directory
  from cellprofiler_core.preferences import get_recent_files
  from cellprofiler_core.preferences import remove_image_directory_listener
  from cellprofiler_core.preferences import remove_output_directory_listener
  from cellprofiler_core.preferences import set_default_image_directory
  from cellprofiler_core.preferences import set_default_output_directory
  from cellprofiler_core.preferences import set_pixel_size
  from ._progress_watcher import ProgressWatcher
  from ..constants.preferences_view import WELCOME_MESSAGE
  from ..html.utils import rst_to_html_fragment
  from ..htmldialog import HTMLDialog
  from ..utilities.preferences_view import secs_to_timestr
label_desc: Use image node_id 1 to create a new PreferencesView object  with example: obj = PreferencesView(parent_sizer, panel, progress_panel, status_panel)