code: def __init__(self, *args, **kwargs):
      super(self.__class__, self).__init__(*args, **kwargs)
      self.font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
      self.SetFont(self.font)
      self.SetDoubleBuffered(True)
  
      # Maps folder path names to tree ID objects.
      # You must explicitly delete keys from this map when deleting from the tree
      self.folder_id_map = {}
      # Maps file URLs to tree ID objects.
      # You must also explicitly delete keys from this map when deleting from the tree.
      # Also check whether the parent folder is empty and delete that too.
      self.file_id_map = {}
      # A set of URLs which don't pass the user's file filters.
      self.disabled_urls = set()
      # TreeCtrl can't hide items, so instead we store the file objects here when they aren't shown.
      self.hidden_files = []
      # The id of the tree root. This is never shown to the user but is what folders get attached to.
      self.root_id = self.AddRoot("File List")
      # Whether we're showing disabled items on the tree
      self.show_disabled = True
      # Whether metadata has been extracted from the file list.
      self._metadata_extracted = False
  
      self.focus_item = None
      self.fn_delete = None
      self.fn_context_menu = None
      self.fn_do_menu_command = None
      self.fn_folder_context_menu = None
      self.fn_do_folder_menu_command = None
      self.fn_empty_context_menu = None
      self.fn_do_empty_context_menu_command = None
  
      # Function to add files from pasted text (from imagesetctrl).
      # Will be set by pipelinecontroller during setup.
      self.fn_add_files = None
  
      self.Bind(wx.EVT_PAINT, self.on_paint)
      self.Bind(wx.EVT_LEFT_DOWN, self.on_mouse_down)
      self.Bind(wx.EVT_MOTION, self.on_mouse_moved)
      self.Bind(wx.EVT_KEY_DOWN, self.on_key_down)
      self.Bind(wx.EVT_CONTEXT_MENU, self.on_context_menu)
      self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.on_double_click)
  
      if sys.platform == "win32":
          # Choose a slightly less ugly font.
          self._plane_details_font = wx.Font(
              pointSize=11,
              family=wx.FONTFAMILY_TELETYPE,
              style=wx.FONTSTYLE_NORMAL,
              weight=wx.FONTWEIGHT_NORMAL,
              faceName="Consolas",
          )
          # Windows gets really confused by pointSize
          self._plane_details_font.SetPixelSize((0, 12))
      else:
          self._plane_details_font = wx.Font(
              11,
              wx.FONTFAMILY_TELETYPE,
              wx.FONTSTYLE_NORMAL,
              wx.FONTWEIGHT_NORMAL,
          )
  
      self._drop_files_font = wx.Font(
          36,
          wx.FONTFAMILY_SWISS,
          wx.FONTSTYLE_NORMAL,
          wx.FONTWEIGHT_BOLD,
      )
  
      #
      # Compute the size of the message to display when empty
      #
      tmp = self.GetFont()
      try:
          self.SetFont(self._drop_files_font)
          self.drop_files_and_folders_text_extent = (
              self.GetFullTextExtent(DROP_FILES_AND_FOLDERS_HERE)[:2]
          )
      except:
          LOGGER.warning(
              'Failed to get text extend for "%s" message'
              % DROP_FILES_AND_FOLDERS_HERE,
              exc_info=True,
          )
          self.drop_files_and_folders_text_extent = (200, 30)
      finally:
          self.SetFont(tmp)
      try:
          self.SetFont(self._plane_details_font)
          _, self.details_height = self.GetFullTextExtent(
              DROP_FILES_AND_FOLDERS_HERE
          )[:2]
      except:
          LOGGER.warning(
              "Failed to get text extend for plane details font",
              exc_info=True,
          )
          self.details_height = 11
      finally:
          self.SetFont(tmp)
  
imports: import logging
  import os
  import sys
  import uuid
  from urllib.request import url2pathname
  from urllib.parse import urlparse
  import wx
  import wx.lib.scrolledpanel
  from cellprofiler_core.pipeline import ImageFile
  from cellprofiler_core.preferences import report_progress
label_desc: Use image node_id 1 to create a new PathListCtrl object from inherited base classes: wx with example: obj = PathListCtrl()