class_docstr: The DataTypeController manages a DataType setting
class_docstr_tok: ["The","DataTypeController","manages","a","DataType","setting"]
code: def on_paint(self, event):
      dc = wx.BufferedPaintDC(self.panel)
      dc.SetBackground(
          wx.Brush(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW))
      )
      dc.Clear()
      dc.SetPen(
          wx.Pen(wx.SystemSettings.GetColour(wx.SYS_COLOUR_GRAYTEXT))
      )
      sizer = self.panel.Sizer
      _, panel_width = self.panel.GetClientSize()
      assert isinstance(sizer, wx.lib.rcsizer.RowColSizer)
      bottom_choice_name = self.get_choice_control_name(self.n_items)
      bottom_choice = self.panel.FindWindowByName(bottom_choice_name)
      if bottom_choice is not None:
          r = bottom_choice.GetRect()
          dc.DrawLine(r.Left - 2, 1, r.Left - 2, r.Bottom)
      for i in range(1, self.n_items + 1):
          choice_name = self.get_choice_control_name(i)
          choice = self.panel.FindWindowByName(choice_name)
          if choice is not None:
              r = choice.GetRect()
              dc.DrawLine(1, r.Top - 2, panel_width - 1, r.Top - 2)
      event.Skip()
  
file_path: CellProfiler/src/frontend/cellprofiler/gui/module_view/_data_type_controller.py
imports: import wx
  import wx.lib.rcsizer
  from cellprofiler_core.setting import DataTypes
  from ._module_view import ModuleView
  from ..utilities.module_view import edit_control_name
label_desc: Use image node_id 2 for calling the DataTypeController obj's underlying member method code with example usage: obj.on_paint(event) without return types