def OnLabelRightClick(self, click_event): # a little test for the metadata if not self.core.mdata.name == "test": self.core.mdata.name = "test" else: self.core.mdata.name = "changed again" if click_event.GetRow() == -1: # Make sure this is a column label menu = wx.Menu() ids = {} att = self.view[click_event.GetCol() + 1] old_unit = datastore.sample_attributes.get_unit(att) def OnColumnMenuSelect(menu_event): new_unit = ids[menu_event.GetId()] for sample in self.samples: sample[att].units = new_unit self.display_samples() for unit in samples.get_conv_units(old_unit): id = wx.NewId() ids[id] = unit menu.Append(id, unit) wx.EVT_MENU(menu, id, OnColumnMenuSelect) self.grid.PopupMenu(menu, click_event.GetPosition()) menu.Destroy()
def sel_field_changed(self, event=None): value = self.fcombo.GetValue() if value == self.ignoretxt: unit = '' unitset = ('',) haserr = False else: att = datastore.sample_attributes[value] unit = str(att.unit) unitset = samples.get_conv_units(unit) haserr = att.has_error self.unittext.SetLabel(unitset[0]) self.ucombo.SetItems(unitset) self.ucombo.SetStringSelection(unit) self.unittext.Show(len(unitset) == 1) self.ucombo.Show(len(unitset) > 1) self.errpanel.Show(haserr) self.GetParent().Layout()