docs: def on_m_calc_orient(self,event):
          '''
          This fucntion does exactly what the 'import orientation' fuction does in MagIC.py
          after some dialog boxes the function calls orientation_magic.py
          '''
          # first see if demag_orient.txt
          self.on_m_save_file(None)
          orient_convention_dia = orient_convention(None)
          orient_convention_dia.Center()
          #orient_convention_dia.ShowModal()
          if orient_convention_dia.ShowModal() == wx.ID_OK:
              ocn_flag = orient_convention_dia.ocn_flag
              dcn_flag = orient_convention_dia.dcn_flag
              gmt_flags = orient_convention_dia.gmt_flags
              orient_convention_dia.Destroy()
          else:
              return
  
          or_con = orient_convention_dia.ocn
          dec_correction_con = int(orient_convention_dia.dcn)
          try:
              hours_from_gmt = float(orient_convention_dia.gmt)
          except:
              hours_from_gmt = 0
          try:
              dec_correction = float(orient_convention_dia.correct_dec)
          except:
              dec_correction = 0
  
          method_code_dia=method_code_dialog(None)
          method_code_dia.Center()
          if method_code_dia.ShowModal() == wx.ID_OK:
              bedding_codes_flags=method_code_dia.bedding_codes_flags
              methodcodes_flags=method_code_dia.methodcodes_flags
              method_code_dia.Destroy()
          else:
              print("-I- Canceling calculation")
              return
  
          method_codes = method_code_dia.methodcodes
          average_bedding = method_code_dia.average_bedding
          bed_correction = method_code_dia.bed_correction
  
          command_args=['orientation_magic.py']
          command_args.append("-WD %s"%self.WD)
          command_args.append("-Fsa er_samples_orient.txt")
          command_args.append("-Fsi er_sites_orient.txt ")
          command_args.append("-f %s"%"demag_orient.txt")
          command_args.append(ocn_flag)
          command_args.append(dcn_flag)
          command_args.append(gmt_flags)
          command_args.append(bedding_codes_flags)
          command_args.append(methodcodes_flags)
          commandline = " ".join(command_args)
  
          print("-I- executing command: %s" %commandline)
          os.chdir(self.WD)
          if os.path.exists(os.path.join(self.WD, 'er_samples.txt')) or os.path.exists(os.path.join(self.WD, 'er_sites.txt')):
              append = True
          else:
              append = False
          samp_file = "er_samples.txt"
          site_file = "er_sites.txt"
          success, error_message = ipmag.orientation_magic(or_con, dec_correction_con, dec_correction,
                                                           bed_correction, hours_from_gmt=hours_from_gmt,
                                                           method_codes=method_codes, average_bedding=average_bedding,
                                                           orient_file='demag_orient.txt', samp_file=samp_file,
                                                           site_file=site_file, input_dir_path=self.WD,
                                                           output_dir_path=self.WD, append=append, data_model=3)
  
          if not success:
              dlg1 = wx.MessageDialog(None,caption="Message:", message="-E- ERROR: Error in running orientation_magic.py\n{}".format(error_message) ,style=wx.OK|wx.ICON_INFORMATION)
              dlg1.ShowModal()
              dlg1.Destroy()
  
              print("-E- ERROR: Error in running orientation_magic.py")
              return
          else:
              dlg2 = wx.MessageDialog(None,caption="Message:", message="-I- Successfully ran orientation_magic", style=wx.OK|wx.ICON_INFORMATION)
              dlg2.ShowModal()
              dlg2.Destroy()
              self.Parent.Show()
              self.Parent.Raise()
              self.Destroy()
              self.contribution.add_magic_table('samples')
              return