code: def on_select_menuitem(self, event, grid, row, col, selection):
          
          if self.grid.changes:  # if user selects a menuitem, that is an edit
              self.grid.changes.add(row)
          else:
              self.grid.changes = {row}
  
          item_id = event.GetId()
          item = event.EventObject.FindItemById(item_id)
          label = item.Label
          cell_value = grid.GetCellValue(row, col)
          if str(label) == "CLEAR cell of all values":
              label = ""
  
          col_label = grid.GetColLabelValue(col).strip('\nEDIT ALL').strip('**')
          if col_label in self.colon_delimited_lst and label:
              if not label.lower() in cell_value.lower():
                  label += (":" + cell_value).rstrip(':')
              else:
                  label = cell_value
  
          if self.selected_col and self.selected_col == col:
              for row in range(self.grid.GetNumberRows()):
                  grid.SetCellValue(row, col, label)
                  if self.grid.changes:
                      self.grid.changes.add(row)
                  else:
                      self.grid.changes = {row}
  
                  #self.selected_col = None
          else:
              grid.SetCellValue(row, col, label)
  
          if selection:
              for cell in selection:
                  row = cell[0]
                  grid.SetCellValue(row, col, label)
              return
docs: sets value of selected cell to value selected from menu