# HG changeset patch # User laurent # Date 1330513220 -3600 # Node ID d54036f70390a1fcdafb835ad7d6845c107f0aa2 # Parent 7c31fab22c74196d562a654326c440477ddc021a Fix bug when trying to drag'n drop variable from slave variables grid diff -r 7c31fab22c74 -r d54036f70390 etherlab/ConfigEditor.py --- a/etherlab/ConfigEditor.py Thu Feb 23 23:34:40 2012 +0100 +++ b/etherlab/ConfigEditor.py Wed Feb 29 12:00:20 2012 +0100 @@ -129,11 +129,11 @@ """ for row in range(self.GetNumberRows()): row_highlights = self.Highlights.get(row, {}) - access = self.GetValueByName(row, "Access") + pdo_mapping = self.GetValueByName(row, "PDOMapping") for col in range(self.GetNumberCols()): colname = self.GetColLabelValue(col, False) - if colname in ["PDO index", "PDO name", "PDO type"] and access == "": + if colname in ["PDO index", "PDO name", "PDO type"] and pdo_mapping == "": highlight_colours = (wx.LIGHT_GREY, wx.WHITE) else: highlight_colours = row_highlights.get(colname.lower(), [(wx.WHITE, wx.BLACK)])[-1] @@ -262,6 +262,8 @@ self._init_ctrls(parent) self.Controler = controler + self.Slave = None + self.Type = None self.SyncManagersTable = SyncManagersTable(self, [], GetSyncManagersTableColnames()) self.SyncManagersGrid.SetTable(self.SyncManagersTable) @@ -290,8 +292,10 @@ self.VariablesGrid.SetColMinimalWidth(col, self.VariablesGridColSizes[col]) self.VariablesGrid.AutoSizeColumn(col, False) - def SetSlaveInfos(self, slave_infos): + def SetSlaveInfos(self, slave_pos, slave_infos): + self.Slave = slave_pos if slave_infos is not None: + self.Type = slave_infos["device_type"] self.Vendor.SetValue(slave_infos["vendor"]) self.ProductCode.SetValue(slave_infos["product_code"]) self.RevisionNumber.SetValue(slave_infos["revision_number"]) @@ -301,6 +305,7 @@ self.VariablesTable.SetData(slave_infos["entries"]) self.VariablesTable.ResetView(self.VariablesGrid) else: + self.Type = None self.Vendor.SetValue("") self.ProductCode.SetValue("") self.RevisionNumber.SetValue("") @@ -314,14 +319,14 @@ row = event.GetRow() data_type = self.VariablesTable.GetValueByName(row, "Type") - access = self.VariablesTable.GetValueByName(row, "Access") - if (event.GetCol() == 0 and access != "" and + pdo_mapping = self.VariablesTable.GetValueByName(row, "PDOMapping") + if (event.GetCol() == 0 and pdo_mapping != "" and self.Controler.GetSizeOfType(data_type) is not None): entry_index = self.Controler.ExtractHexDecValue(self.VariablesTable.GetValueByName(row, "Index")) entry_subindex = self.Controler.ExtractHexDecValue(self.VariablesTable.GetValueByName(row, "SubIndex")) - var_name = "%s_%4.4x_%2.2x" % (self.Type.GetValue(), entry_index, entry_subindex) - if access in ["ro"]: + var_name = "%s_%4.4x_%2.2x" % (self.Type, entry_index, entry_subindex) + if pdo_mapping in ["R"]: dir = "%I" else: dir = "%Q" @@ -468,7 +473,7 @@ else: type_infos = self.Controler.GetSlaveType(self.Slave) self.Type.SetValue(type_infos["device_type"]) - self.SlaveInfosPanel.SetSlaveInfos(slave_infos) + self.SlaveInfosPanel.SetSlaveInfos(self.Slave, slave_infos) def OnAliasChanged(self, event): alias = self.Alias.GetValue() @@ -656,5 +661,5 @@ return False, False def RefreshView(self): - self.Editor.SetSlaveInfos(self.Controler.GetSlaveInfos()) + self.Editor.SetSlaveInfos(self.Controler.GetSlavePos(), self.Controler.GetSlaveInfos()) \ No newline at end of file diff -r 7c31fab22c74 -r d54036f70390 etherlab/etherlab.py --- a/etherlab/etherlab.py Thu Feb 23 23:34:40 2012 +0100 +++ b/etherlab/etherlab.py Wed Feb 29 12:00:20 2012 +0100 @@ -64,7 +64,10 @@ """ @return: Tupple containing plugin IEC location of current plugin : %I0.0.4.5 => (0,0,4,5) """ - return self.PlugParent.GetCurrentLocation() + (self.BaseParams.getIEC_Channel(), 0) + return self.PlugParent.GetCurrentLocation() + self.GetSlavePos() + + def GetSlavePos(self): + return self.BaseParams.getIEC_Channel(), 0 def GetSlaveTypeInfos(self): slave_type = self.EtherlabDS402Slave.getNode_Type() @@ -312,7 +315,7 @@ def AddSlave(self): slaves = self.GetSlaves() for PlugInstance in self.IterChilds(): - slaves.append((PlugInstance.BaseParams.getIEC_Channel(), 0)) + slaves.append(PlugInstance.GetSlavePos()) slaves.sort() if len(slaves) > 0: new_pos = (slaves[-1][0] + 1, 0) @@ -422,7 +425,7 @@ "type": var_class, "size": var_size, "IEC_type": entry["Type"], - "var_name": "%s_%4.4x_%2.2x" % (type_infos["device_type"], index, subindex), + "var_name": "%s_%4.4x_%2.2x" % ("_".join(type_infos["device_type"].split()), index, subindex), "location": "%s%s%s"%(var_dir, var_size, ".".join(map(str, current_location + (index, subindex)))), "description": "",