code: def on_continueButton(self, event, grid, next_dia=None):
          
          #wait = wx.BusyInfo("Please wait, working...")
          # unhighlight selected columns, etc.
          if self.drop_down_menu:
              self.drop_down_menu.clean_up()
  
          # remove '**' from col names
          #self.remove_starred_labels(grid)
          grid.remove_starred_labels()
  
          grid.SaveEditControlValue() # locks in value in cell currently edited
          grid_name = str(grid.GetName())
  
          # check that all required data are present
          validation_errors = self.validate(grid)
          if validation_errors:
              result = pw.warning_with_override("You are missing required data in these columns: {}\nAre you sure you want to continue without these data?".format(', '.join(validation_errors)))
              if result == wx.ID_YES:
                  pass
              else:
                  return False
  
          if grid.changes:
              self.onSave(grid)
  
          self.deleteRowButton = None
          #self.panel.Destroy()  # calling Destroy here breaks with Anaconda Python (segfault)
  
          # make sure that specimens get propagated with
          # any default sample info
          if next_dia == self.InitLocCheck:
              if self.er_magic_data.specimens:
                  for spec in self.er_magic_data.specimens:
                      spec.propagate_data()
  
          if next_dia:
              wait = wx.BusyInfo("Please wait, working...")
              wx.SafeYield()
              wx.CallAfter(self.panel.Destroy) # no segfault here!
              next_dia()
              # need to wait to process the resize:
              event = wx.PyCommandEvent(wx.EVT_SIZE.typeId, self.GetId())
              wx.CallAfter(self.GetEventHandler().ProcessEvent, event)
              del wait
          else:
              wait = wx.BusyInfo("Please wait, writing data to files...")
              wx.SafeYield()
              # actually write data:
              self.er_magic_data.write_files()
              self.Destroy()
              del wait
docs: pulls up next dialog, if there is one.
          gets any updated information from the current grid and runs ErMagicBuilder