160 grid.SetReadOnly(row, col, True) |
156 grid.SetReadOnly(row, col, True) |
161 interval = self.GetValueByName(row, colname) |
157 interval = self.GetValueByName(row, colname) |
162 if interval != "" and IEC_TIME_MODEL.match(interval.upper()) is None: |
158 if interval != "" and IEC_TIME_MODEL.match(interval.upper()) is None: |
163 error = True |
159 error = True |
164 elif colname == "Single": |
160 elif colname == "Single": |
165 editor = SingleCellEditor(self, colname) |
161 editor = wx.grid.GridCellChoiceEditor(self.Parent.VariableList) |
166 editor.SetParameters(self.Parent.VariableList) |
|
167 if self.GetValueByName(row, "Triggering") != "Interrupt": |
162 if self.GetValueByName(row, "Triggering") != "Interrupt": |
168 grid.SetReadOnly(row, col, True) |
163 grid.SetReadOnly(row, col, True) |
169 single = self.GetValueByName(row, colname) |
164 single = self.GetValueByName(row, colname) |
170 if single != "" and not CheckSingle(single, self.Parent.VariableList): |
165 if single != "" and not CheckSingle(single, self.Parent.VariableList): |
171 error = True |
166 error = True |
172 elif colname == "Triggering": |
167 elif colname == "Triggering": |
173 editor = wx.grid.GridCellChoiceEditor() |
168 editor = wx.grid.GridCellChoiceEditor(map(_, GetTaskTriggeringOptions())) |
174 editor.SetParameters(",".join(map(_, GetTaskTriggeringOptions()))) |
|
175 elif colname == "Type": |
169 elif colname == "Type": |
176 editor = wx.grid.GridCellChoiceEditor() |
170 editor = wx.grid.GridCellChoiceEditor(self.Parent.TypeList) |
177 editor.SetParameters(self.Parent.TypeList) |
|
178 elif colname == "Priority": |
171 elif colname == "Priority": |
179 editor = wx.grid.GridCellNumberEditor() |
172 editor = wx.grid.GridCellNumberEditor() |
180 editor.SetParameters("0,65535") |
173 editor.SetParameters("0,65535") |
181 elif colname == "Task": |
174 elif colname == "Task": |
182 editor = wx.grid.GridCellChoiceEditor() |
175 editor = wx.grid.GridCellChoiceEditor(self.Parent.TaskList) |
183 editor.SetParameters(self.Parent.TaskList) |
|
184 |
176 |
185 grid.SetCellEditor(row, col, editor) |
177 grid.SetCellEditor(row, col, editor) |
186 grid.SetCellRenderer(row, col, renderer) |
178 grid.SetCellRenderer(row, col, renderer) |
187 |
179 |
188 if error: |
180 if error: |
228 main_sizer.AddGrowableRow(1) |
220 main_sizer.AddGrowableRow(1) |
229 |
221 |
230 tasks_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) |
222 tasks_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) |
231 tasks_sizer.AddGrowableCol(0) |
223 tasks_sizer.AddGrowableCol(0) |
232 tasks_sizer.AddGrowableRow(1) |
224 tasks_sizer.AddGrowableRow(1) |
233 main_sizer.AddSizer(tasks_sizer, border=5, |
225 main_sizer.Add(tasks_sizer, border=5, |
234 flag=wx.GROW | wx.TOP | wx.LEFT | wx.RIGHT) |
226 flag=wx.GROW | wx.TOP | wx.LEFT | wx.RIGHT) |
235 |
227 |
236 tasks_buttons_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0) |
228 tasks_buttons_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0) |
237 tasks_buttons_sizer.AddGrowableCol(0) |
229 tasks_buttons_sizer.AddGrowableCol(0) |
238 tasks_buttons_sizer.AddGrowableRow(0) |
230 tasks_buttons_sizer.AddGrowableRow(0) |
239 tasks_sizer.AddSizer(tasks_buttons_sizer, flag=wx.GROW) |
231 tasks_sizer.Add(tasks_buttons_sizer, flag=wx.GROW) |
240 |
232 |
241 tasks_label = wx.StaticText(self.Editor, label=_(u'Tasks:')) |
233 tasks_label = wx.StaticText(self.Editor, label=_(u'Tasks:')) |
242 tasks_buttons_sizer.AddWindow(tasks_label, flag=wx.ALIGN_BOTTOM) |
234 tasks_buttons_sizer.Add(tasks_label, flag=wx.ALIGN_BOTTOM) |
243 |
235 |
244 for name, bitmap, help in [ |
236 for name, bitmap, help in [ |
245 ("AddTaskButton", "add_element", _("Add task")), |
237 ("AddTaskButton", "add_element", _("Add task")), |
246 ("DeleteTaskButton", "remove_element", _("Remove task")), |
238 ("DeleteTaskButton", "remove_element", _("Remove task")), |
247 ("UpTaskButton", "up", _("Move task up")), |
239 ("UpTaskButton", "up", _("Move task up")), |
248 ("DownTaskButton", "down", _("Move task down"))]: |
240 ("DownTaskButton", "down", _("Move task down"))]: |
249 button = wx.lib.buttons.GenBitmapButton(self.Editor, |
241 button = wx.lib.buttons.GenBitmapButton(self.Editor, |
250 bitmap=GetBitmap(bitmap), |
242 bitmap=GetBitmap(bitmap), |
251 size=wx.Size(28, 28), |
243 size=wx.Size(28, 28), |
252 style=wx.NO_BORDER) |
244 style=wx.NO_BORDER) |
253 button.SetToolTipString(help) |
245 button.SetToolTip(help) |
254 setattr(self, name, button) |
246 setattr(self, name, button) |
255 tasks_buttons_sizer.AddWindow(button) |
247 tasks_buttons_sizer.Add(button) |
256 |
248 |
257 self.TasksGrid = CustomGrid(self.Editor, style=wx.VSCROLL) |
249 self.TasksGrid = CustomGrid(self.Editor, style=wx.VSCROLL) |
258 self.TasksGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnTasksGridCellChange) |
250 self.TasksGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGING, self.OnTasksGridCellChange) |
259 tasks_sizer.AddWindow(self.TasksGrid, flag=wx.GROW) |
251 tasks_sizer.Add(self.TasksGrid, flag=wx.GROW) |
260 |
252 |
261 instances_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) |
253 instances_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) |
262 instances_sizer.AddGrowableCol(0) |
254 instances_sizer.AddGrowableCol(0) |
263 instances_sizer.AddGrowableRow(1) |
255 instances_sizer.AddGrowableRow(1) |
264 main_sizer.AddSizer(instances_sizer, border=5, |
256 main_sizer.Add(instances_sizer, border=5, |
265 flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
257 flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
266 |
258 |
267 instances_buttons_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0) |
259 instances_buttons_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0) |
268 instances_buttons_sizer.AddGrowableCol(0) |
260 instances_buttons_sizer.AddGrowableCol(0) |
269 instances_buttons_sizer.AddGrowableRow(0) |
261 instances_buttons_sizer.AddGrowableRow(0) |
270 instances_sizer.AddSizer(instances_buttons_sizer, flag=wx.GROW) |
262 instances_sizer.Add(instances_buttons_sizer, flag=wx.GROW) |
271 |
263 |
272 instances_label = wx.StaticText(self.Editor, label=_(u'Instances:')) |
264 instances_label = wx.StaticText(self.Editor, label=_(u'Instances:')) |
273 instances_buttons_sizer.AddWindow(instances_label, flag=wx.ALIGN_BOTTOM) |
265 instances_buttons_sizer.Add(instances_label, flag=wx.ALIGN_BOTTOM) |
274 |
266 |
275 for name, bitmap, help in [ |
267 for name, bitmap, help in [ |
276 ("AddInstanceButton", "add_element", _("Add instance")), |
268 ("AddInstanceButton", "add_element", _("Add instance")), |
277 ("DeleteInstanceButton", "remove_element", _("Remove instance")), |
269 ("DeleteInstanceButton", "remove_element", _("Remove instance")), |
278 ("UpInstanceButton", "up", _("Move instance up")), |
270 ("UpInstanceButton", "up", _("Move instance up")), |
279 ("DownInstanceButton", "down", _("Move instance down"))]: |
271 ("DownInstanceButton", "down", _("Move instance down"))]: |
280 button = wx.lib.buttons.GenBitmapButton( |
272 button = wx.lib.buttons.GenBitmapButton( |
281 self.Editor, bitmap=GetBitmap(bitmap), |
273 self.Editor, bitmap=GetBitmap(bitmap), |
282 size=wx.Size(28, 28), style=wx.NO_BORDER) |
274 size=wx.Size(28, 28), style=wx.NO_BORDER) |
283 button.SetToolTipString(help) |
275 button.SetToolTip(help) |
284 setattr(self, name, button) |
276 setattr(self, name, button) |
285 instances_buttons_sizer.AddWindow(button) |
277 instances_buttons_sizer.Add(button) |
286 |
278 |
287 self.InstancesGrid = CustomGrid(self.Editor, style=wx.VSCROLL) |
279 self.InstancesGrid = CustomGrid(self.Editor, style=wx.VSCROLL) |
288 self.InstancesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnInstancesGridCellChange) |
280 self.InstancesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGING, self.OnInstancesGridCellChange) |
289 instances_sizer.AddWindow(self.InstancesGrid, flag=wx.GROW) |
281 instances_sizer.Add(self.InstancesGrid, flag=wx.GROW) |
290 |
282 |
291 self.Editor.SetSizer(main_sizer) |
283 self.Editor.SetSizer(main_sizer) |
292 |
284 |
293 def __init__(self, parent, tagname, window, controler): |
285 def __init__(self, parent, tagname, window, controler): |
294 EditorPanel.__init__(self, parent, tagname, window, controler) |
286 EditorPanel.__init__(self, parent, tagname, window, controler) |