70 def GetTaskTriggeringOptions(): |
70 def GetTaskTriggeringOptions(): |
71 _ = lambda x : x |
71 _ = lambda x : x |
72 return [_("Interrupt"), _("Cyclic")] |
72 return [_("Interrupt"), _("Cyclic")] |
73 TASKTRIGGERINGOPTIONS_DICT = dict([(_(option), option) for option in GetTaskTriggeringOptions()]) |
73 TASKTRIGGERINGOPTIONS_DICT = dict([(_(option), option) for option in GetTaskTriggeringOptions()]) |
74 |
74 |
|
75 SingleCellEditor = lambda *x : wx.grid.GridCellChoiceEditor() |
|
76 |
|
77 def CheckSingle(single, varlist): |
|
78 return single in varlist |
|
79 |
|
80 |
75 def GetInstancesTableColnames(): |
81 def GetInstancesTableColnames(): |
76 _ = lambda x : x |
82 _ = lambda x : x |
77 return [_("Name"), _("Type"), _("Task")] |
83 return [_("Name"), _("Type"), _("Task")] |
78 |
84 |
79 class ResourceTable(CustomTable): |
85 class ResourceTable(CustomTable): |
111 if col < len(self.colnames): |
117 if col < len(self.colnames): |
112 colname = self.GetColLabelValue(col, False) |
118 colname = self.GetColLabelValue(col, False) |
113 if colname == "Triggering": |
119 if colname == "Triggering": |
114 value = TASKTRIGGERINGOPTIONS_DICT[value] |
120 value = TASKTRIGGERINGOPTIONS_DICT[value] |
115 self.data[row][colname] = value |
121 self.data[row][colname] = value |
116 |
|
117 SingleCellEditor = lambda x,c : wx.grid.GridCellChoiceEditor(x) |
|
118 |
122 |
119 def _updateColAttrs(self, grid): |
123 def _updateColAttrs(self, grid): |
120 """ |
124 """ |
121 wx.grid.Grid -> update the column attributes to add the |
125 wx.grid.Grid -> update the column attributes to add the |
122 appropriate renderer given the column name. |
126 appropriate renderer given the column name. |
148 grid.SetReadOnly(row, col, True) |
152 grid.SetReadOnly(row, col, True) |
149 interval = self.GetValueByName(row, colname) |
153 interval = self.GetValueByName(row, colname) |
150 if interval != "" and IEC_TIME_MODEL.match(interval.upper()) is None: |
154 if interval != "" and IEC_TIME_MODEL.match(interval.upper()) is None: |
151 error = True |
155 error = True |
152 elif colname == "Single": |
156 elif colname == "Single": |
153 editor = self.SingleCellEditor(self,colname) |
157 editor = SingleCellEditor(self,colname) |
154 editor.SetParameters(self.Parent.VariableList) |
158 editor.SetParameters(self.Parent.VariableList) |
155 if self.GetValueByName(row, "Triggering") != "Interrupt": |
159 if self.GetValueByName(row, "Triggering") != "Interrupt": |
156 grid.SetReadOnly(row, col, True) |
160 grid.SetReadOnly(row, col, True) |
|
161 single = self.GetValueByName(row, colname) |
|
162 if single != "" and not CheckSingle(single,self.Parent.VariableList): |
|
163 error = True |
157 elif colname == "Triggering": |
164 elif colname == "Triggering": |
158 editor = wx.grid.GridCellChoiceEditor() |
165 editor = wx.grid.GridCellChoiceEditor() |
159 editor.SetParameters(",".join(map(_, GetTaskTriggeringOptions()))) |
166 editor.SetParameters(",".join(map(_, GetTaskTriggeringOptions()))) |
160 elif colname == "Type": |
167 elif colname == "Type": |
161 editor = wx.grid.GridCellChoiceEditor() |
168 editor = wx.grid.GridCellChoiceEditor() |
439 for i in xrange(self.InstancesTable.GetNumberRows()): |
446 for i in xrange(self.InstancesTable.GetNumberRows()): |
440 if self.InstancesTable.GetValueByName(i, "Task") == old_name: |
447 if self.InstancesTable.GetValueByName(i, "Task") == old_name: |
441 self.InstancesTable.SetValueByName(i, "Task", new_name) |
448 self.InstancesTable.SetValueByName(i, "Task", new_name) |
442 self.RefreshModel() |
449 self.RefreshModel() |
443 colname = self.TasksTable.GetColLabelValue(col, False) |
450 colname = self.TasksTable.GetColLabelValue(col, False) |
444 if colname in ["Triggering", "Name", "Interval"]: |
451 if colname in ["Triggering", "Name", "Single", "Interval"]: |
445 wx.CallAfter(self.RefreshView, False) |
452 wx.CallAfter(self.RefreshView, False) |
446 event.Skip() |
453 event.Skip() |
447 |
454 |
448 def OnInstancesGridCellChange(self, event): |
455 def OnInstancesGridCellChange(self, event): |
449 self.RefreshModel() |
456 self.RefreshModel() |