示例#1
0
    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()
示例#2
0
    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()
示例#3
0
 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