--- a/etherlab/ConfigEditor.py Tue Mar 05 23:04:59 2013 +0100
+++ b/etherlab/ConfigEditor.py Wed Mar 06 18:37:23 2013 +0100
@@ -260,12 +260,12 @@
value = self.data[row].get("ReadFrom", "")
- return "%d, #x%0.4x, #x%0.2x" % value
+ return "%d, #x%0.4X, #x%0.2X" % value elif colname.startswith("Write to"):
value = self.data[row].get("WriteTo", "")
- return "%d, #x%0.4x, #x%0.2x" % value
+ return "%d, #x%0.4X, #x%0.2X" % value return self.data[row].get(colname, "")
def SetValue(self, row, col, value):
@@ -426,9 +426,9 @@
colname = self.GetColLabelValue(col, False)
value = self.data[row].get(colname, "")
- return "#x%0.4x" % value
+ return "#x%0.4X" % value elif colname == "Subindex":
- return "#x%0.2x" % value
+ return "#x%0.2X" % value def SetValue(self, row, col, value):
@@ -565,6 +565,8 @@
self.StartupCommandsGrid.SetMinSize(wx.Size(0, 150))
self.StartupCommandsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
self.OnStartupCommandsGridCellChange)
+ self.StartupCommandsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, + self.OnStartupCommandsGridEditorShow) second_staticbox = wx.StaticBox(self.EthercatMasterEditor, label=_("Nodes variables filter:"))
second_staticbox_sizer = wx.StaticBoxSizer(second_staticbox, wx.VERTICAL)
@@ -600,7 +602,7 @@
ConfTreeNodeEditor.__init__(self, parent, controler, window)
self.ProcessVariables = []
- self.LastCommandInfos = None
self.ProcessVariablesDefaultValue = {"Name": "", "ReadFrom": "", "WriteTo": "", "Description": ""}
self.ProcessVariablesTable = ProcessVariablesTable(self, [], GetProcessVariablesTableColnames())
@@ -763,12 +765,11 @@
def RefreshStartupCommands(self, position=None, command_idx=None):
if self.CurrentNodesFilter is not None:
- self.StartupCommandsGrid.CloseEditControl()
self.StartupCommandsTable.SetData(
self.Controler.GetStartupCommands(**self.CurrentNodesFilter))
self.StartupCommandsTable.ResetView(self.StartupCommandsGrid)
if position is not None and command_idx is not None:
- self.SelectStartupCommand(position, command_idx)
+ wx.CallAfter(self.SelectStartupCommand, position, command_idx) def SelectStartupCommand(self, position, command_idx):
self.StartupCommandsGrid.SetSelectedRow(
@@ -847,43 +848,44 @@
+ def OnStartupCommandsGridEditorShow(self, event): + self.CellShown = event.GetRow(), event.GetCol() def OnStartupCommandsGridCellChange(self, event):
row, col = event.GetRow(), event.GetCol()
- colname = self.StartupCommandsTable.GetColLabelValue(col, False)
- value = self.StartupCommandsTable.GetValue(row, col)
- if colname == "Position":
- if value not in self.Controler.GetSlaves():
- message = _("No slave defined at position %d!") % value
- self.Controler.RemoveStartupCommand(
- self.StartupCommandsTable.GetOldValue(),
- self.StartupCommandsTable.GetValueByName(row, "command_idx"))
+ if self.CellShown == (row, col): + colname = self.StartupCommandsTable.GetColLabelValue(col, False) + value = self.StartupCommandsTable.GetValue(row, col) + if colname == "Position": + if value not in self.Controler.GetSlaves(): + message = _("No slave defined at position %d!") % value + old_value = self.StartupCommandsTable.GetOldValue() command = self.StartupCommandsTable.GetRow(row)
- command_idx = self.Controler.AppendStartupCommand(command)
- wx.CallAfter(self.RefreshStartupCommands, command["Position"], command_idx)
- command = self.StartupCommandsTable.GetRow(row)
- if self.LastCommandInfos != command:
- self.LastCommandInfos = command.copy()
+ if message is None and old_value != command["Position"]: + self.Controler.RemoveStartupCommand( + self.StartupCommandsTable.GetOldValue(), + command["command_idx"], False) + command_idx = self.Controler.AppendStartupCommand(command) + wx.CallAfter(self.RefreshStartupCommands, command["Position"], command_idx) + command = self.StartupCommandsTable.GetRow(row) self.Controler.SetStartupCommandInfos(command)
if colname in ["Index", "SubIndex"]:
wx.CallAfter(self.RefreshStartupCommands, command["Position"], command["command_idx"])
+ dialog = wx.MessageDialog(self, message, _("Error"), wx.OK|wx.ICON_ERROR) - dialog = wx.MessageDialog(self, message, _("Error"), wx.OK|wx.ICON_ERROR)
def OnResize(self, event):
self.EthercatMasterEditor.GetBestSize()
xstart, ystart = self.EthercatMasterEditor.GetViewStart()