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', er_items, 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()
def on_okButton(self, event): os.chdir(self.WD) # update headers properly for table in ['specimen', 'sample', 'site', 'location', 'age']: headers = self.text_controls[table].GetValue().split('\n') for header in headers: if header not in self.er_magic.headers[table]['er'][0]: self.er_magic.headers[table]['er'][0].append(header) # take out 'er_specimen_name' and other unnecessary headers self.er_magic.headers[table]['er'][0] = builder.remove_list_headers(self.er_magic.headers[table]['er'][0]) self.main_frame.init_check_window() self.Destroy()
def add_pmag_reqd_headers(): if self.grid_type == 'result': return [] add_in = [] col_labels = self.grid.col_labels for reqd_head in self.grid_headers[self.grid_type]['pmag'][1]: if reqd_head in self.er_magic.double: if reqd_head + "++" not in col_labels: add_in.append(reqd_head + "++") else: if reqd_head not in col_labels: add_in.append(reqd_head) add_in = builder.remove_list_headers(add_in) return add_in