docs: def on_add_cols(self, event):
          """
          Show simple dialog that allows user to add a new column name
          """
          col_labels = self.grid.col_labels
          # do not list headers that are already column labels in the grid
          er_items = [head for head in self.grid_headers[self.grid_type]['er'][2] if head not in col_labels]
          # remove unneeded headers
          er_items = builder.remove_list_headers(er_items)
          pmag_headers = sorted(list(set(self.grid_headers[self.grid_type]['pmag'][2]).union(self.grid_headers[self.grid_type]['pmag'][1])))
          # do not list headers that are already column labels in the grid
          # make sure that pmag_specific columns are marked with '++'
          to_add = [i + '++' for i in self.er_magic.double if i in pmag_headers and i + '++' not in col_labels]
          pmag_headers.extend(to_add)
          pmag_items = [head for head in pmag_headers if head not in er_items and head not in col_labels]
          # remove unneeded headers
          pmag_items = sorted(builder.remove_list_headers(pmag_items))
          dia = pw.HeaderDialog(self, 'columns to add', items1=er_items, items2=pmag_items)
          dia.Centre()
          result = dia.ShowModal()
          new_headers = []
          if result == 5100:
              new_headers = dia.text_list
          if not new_headers:
              return
          errors = self.add_new_grid_headers(new_headers, er_items, pmag_items)
          if errors:
              errors_str = ', '.join(errors)
              pw.simple_warning('You are already using the following headers: {}\nSo they will not be added'.format(errors_str))
  
          # problem: if widgets above the grid are too wide,
          # the grid does not re-size when adding columns
          # awkward solution (causes flashing):
          if self.grid.GetWindowStyle() != wx.DOUBLE_BORDER:
              self.grid.SetWindowStyle(wx.DOUBLE_BORDER)
          self.main_sizer.Fit(self)
          self.grid.SetWindowStyle(wx.NO_BORDER)
          self.Centre()
          self.main_sizer.Fit(self)
          #
          self.grid.changes = set(range(self.grid.GetNumberRows()))
          dia.Destroy()