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 right_menu(self, evt):
      menu = wx.Menu()
      all_menu = wx.Menu()
  
      def fn_key(x):
          return x[2], x
  
      def on_selection(event):
          self.Value = index[event.Id]
          self.choice_made(event)
  
      choices_sorted_by_num = sorted(self.orig_choices, key=fn_key)
      index = {}
      for idx, choice in enumerate(choices_sorted_by_num):
          choices_sorted_by_num[idx] = choice + (idx,)
          all_menu.Append(idx, "filler")
          index[idx] = choice[0]
  
      align_twosided_items(
          self.combo_dlg,
          all_menu.MenuItems,
          left_texts=[
              name for name, _, _, _, _ in choices_sorted_by_num
          ],
          right_texts=[
              self.get_choice_label(choice)
              for choice in choices_sorted_by_num
          ],
      )
  
      submenus = {}
      for (
          name,
          annotation,
          num,
          is_input_module,
          choiceid,
      ) in choices_sorted_by_num:
          if not annotation:
              continue
          key = (num, annotation, is_input_module)
          if key not in submenus:
              submenus[key] = wx.Menu()
          submenus[key].Append(choiceid, name)
      menu.Append(wx.ID_ANY, "All", all_menu)
      sorted_submenus = sorted(submenus.items())
      for (
          num,
          annotation,
          is_input_module,
      ), submenu in sorted_submenus:
          menu.Append(wx.ID_ANY, "filler", submenu)
      align_twosided_items(
          self.combo_dlg,
          menu.MenuItems,
          left_texts=["All"] + [k[1] for k, v in sorted_submenus],
          right_texts=[""]
          + [
              "  " if is_input_module else "#%02d" % num
              for (
                  num,
                  annotation,
                  is_input_module,
              ), v in sorted_submenus
          ],
      )
      menu.Bind(wx.EVT_MENU, on_selection)
      self.PopupMenu(menu)
      menu.Destroy()
  
imports: import platform
  import wx
label_desc: Use image node_id 7 for calling the NameSubscriberComboBox obj's underlying member method code with example usage: obj.right_menu(evt) and returns: x,  x