Exemple #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
        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()))
Exemple #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.data.update_ErMagic()
        self.main_frame.init_check_window()
        self.Destroy()