diff -r 71fdfd4a12a3 -r b65abacdbdf9 etherlab/ConfigEditor.py --- a/etherlab/ConfigEditor.py Thu Apr 25 23:01:06 2013 +0200 +++ b/etherlab/ConfigEditor.py Fri Apr 26 13:57:10 2013 +0200 @@ -984,10 +984,6 @@ maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy) event.Skip() -def GetModulesTableColnames(): - _ = lambda x : x - return [_("Name"), _("PDO alignment (bits)")] - class LibraryEditorSizer(wx.FlexGridSizer): def __init__(self, parent, module_library, buttons): @@ -1051,9 +1047,12 @@ self.AddWindow(self.ModulesGrid, border=10, flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT) - for colname, colsize, colalign in zip(GetModulesTableColnames(), - [400, 150], - [wx.ALIGN_LEFT, wx.ALIGN_RIGHT]): + for colname, colsize, colalign in zip( + [_("Name")] + [param_infos["column_label"] + for param, param_infos in + self.ModuleLibrary.MODULES_EXTRA_PARAMS], + [400] + [150] * len(self.ModuleLibrary.MODULES_EXTRA_PARAMS), + [wx.ALIGN_LEFT] + [wx.ALIGN_RIGHT] * len(self.ModuleLibrary.MODULES_EXTRA_PARAMS)): self.ModulesGrid.AddColumn(_(colname), colsize, colalign) self.ModulesGrid.SetMainColumn(0) @@ -1089,7 +1088,10 @@ item = self.ModulesGrid.AppendItem(root, "") self.ModulesGrid.SetItemText(item, module["name"], 0) if module["infos"] is not None: - self.ModulesGrid.SetItemText(item, str(module["infos"]["alignment"]), 1) + for param_idx, (param, params_infos) in enumerate(self.ModuleLibrary.MODULES_EXTRA_PARAMS): + self.ModulesGrid.SetItemText(item, + str(module["infos"][param]), + param_idx + 1) else: self.ModulesGrid.SetItemBackgroundColour(item, wx.LIGHT_GREY) self.ModulesGrid.SetItemPyData(item, module["infos"]) @@ -1147,23 +1149,27 @@ item, flags, col = self.ModulesGrid.HitTest(event.GetPosition()) if item.IsOk(): entry_infos = self.ModulesGrid.GetItemPyData(item) - if entry_infos is not None and col == 1: + if entry_infos is not None and col > 0: + param, param_infos = self.ModuleLibrary.MODULES_EXTRA_PARAMS[col - 1] + column_label = param_infos["column_label"] + stripped_column_label = column_label.split('(')[0].strip() dialog = wx.TextEntryDialog(self.ParentWindow, - _("Set PDO alignment (bits):"), - _("%s PDO alignment") % self.ModulesGrid.GetItemText(item), - str(entry_infos["alignment"])) + _("Set %s:") % column_label, + self.ModulesGrid.GetItemText(item) + " " + stripped_column_label, + str(entry_infos[param])) if dialog.ShowModal() == wx.ID_OK: try: - self.ModuleLibrary.SetAlignment( + self.ModuleLibrary.SetModuleExtraParam( entry_infos["vendor"], entry_infos["product_code"], entry_infos["revision_number"], + param, int(dialog.GetValue())) wx.CallAfter(self.RefreshModulesGrid) except ValueError: message = wx.MessageDialog(self, - _("Module PDO alignment must be an integer!"), + _("Module %s must be an integer!") % stripped_column_label, _("Error"), wx.OK|wx.ICON_ERROR) message.ShowModal() message.Destroy()