def on_add_cols(self, event): """ Show simple dialog that allows user to add a new column name """ col_labels = self.grid.col_labels er_items = [head for head in self.grid_headers[self.grid_type]['er'][2] if head not in col_labels] er_items = builder.remove_list_headers(er_items) #include_pmag = self.pmag_checkbox.cb.IsChecked() include_pmag = True if include_pmag or self.grid_type == 'result': pmag_headers = sorted(list(set(self.grid_headers[self.grid_type]['pmag'][2]).union(self.grid_headers[self.grid_type]['pmag'][1]))) pmag_items = [head for head in pmag_headers if head not in er_items and head not in col_labels] #pmag_items = [head for head in self.grid_headers[self.grid_type]['pmag'][2] if head not in er_items and head not in col_labels] pmag_items = builder.remove_list_headers(pmag_items) else: pmag_items = [] dia = pw.HeaderDialog(self, 'columns to add', er_items, pmag_items) result = dia.ShowModal() new_headers = [] if result == 5100: new_headers = dia.text_list if not new_headers: return for name in new_headers: if name: if name not in self.grid.col_labels: col_number = self.grid.add_col(name) # add to appropriate headers list if name in er_items: self.grid_headers[self.grid_type]['er'][0].append(str(name)) if name in pmag_items: self.grid_headers[self.grid_type]['pmag'][0].append(str(name)) import controlled_vocabularies as vocabulary from controlled_vocabularies import vocabularies as vocab if name in vocabulary.possible_vocabularies: self.drop_down_menu.add_drop_down(col_number, name) else: pw.simple_warning('You are already using column header: {}'.format(name)) # 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.main_sizer.Fit(self) # self.grid.changes = set(range(self.grid.GetNumberRows()))
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.data.update_ErMagic() self.main_frame.init_check_window() self.Destroy()