class_docstr: A read-only combobox with extra annotation, and a context menu.
  
  Mostly the same interface as wx.ComboBox, but choices is a list of (Name,
  Parent, modulenum).
code: def __init__(self, annotation, choices=None, value="", name=""):
      wx.Panel.__init__(self, annotation, name=name)
      if choices is None:
          choices = []
      self.orig_choices = choices
      sizer = wx.BoxSizer(wx.HORIZONTAL)
      self.combo_dlg = wx.ComboBox(
          self,
          choices=[choice[0] for choice in choices],
          value=value,
          style=wx.CB_READONLY,
      )
      self.annotation_dlg = wx.StaticText(
          self, label="", style=wx.ST_NO_AUTORESIZE
      )
      self.annotation_dlg.MinSize = (
          max(
              [
                  self.annotation_dlg.GetFullTextExtent(
                      choice[1] + " (from #00)"
                  )[0]
                  for choice in self.orig_choices
              ]
          ),
          -1,
      )
      self.update_annotation()
  
      sizer.AddStretchSpacer()
      sizer.Add(self.combo_dlg, flag=wx.ALL | wx.EXPAND, border=3)
      sizer.Add((5, 5))
      sizer.Add(self.annotation_dlg, flag=wx.ALIGN_CENTER)
      sizer.AddStretchSpacer()
      self.SetSizer(sizer)
  
      self.combo_dlg.Bind(wx.EVT_COMBOBOX, self.choice_made)
      self.combo_dlg.Bind(wx.EVT_RIGHT_DOWN, self.right_menu)
      self.combo_dlg.Bind(wx.EVT_MOUSEWHEEL, self.ignore_mousewheel)
      for child in self.combo_dlg.Children:
          # Mac implements read_only combobox as a choice in a child
          child.Bind(wx.EVT_RIGHT_DOWN, self.right_menu)
      self.callbacks = []
  
imports: import platform
  import wx
label_desc: Use image node_id 1 to create a new NameSubscriberComboBox object from inherited base classes: wx with example: obj = NameSubscriberComboBox(annotation, choices, value, name)