133 def GetRowLabelValues(self, row, translate=True): |
138 def GetRowLabelValues(self, row, translate=True): |
134 return row |
139 return row |
135 |
140 |
136 def GetValue(self, row, col): |
141 def GetValue(self, row, col): |
137 if row < self.GetNumberRows(): |
142 if row < self.GetNumberRows(): |
138 name = str(self.data[row].get(self.GetColLabelValue(col, False), "")) |
143 colname = self.GetColLabelValue(col, False) |
139 return name |
144 value = str(self.data[row].get(colname, "")) |
140 |
145 if colname == "Triggering": |
|
146 return _(value) |
|
147 return value |
|
148 |
141 def GetValueByName(self, row, colname): |
149 def GetValueByName(self, row, colname): |
142 return self.data[row].get(colname) |
150 return self.data[row].get(colname) |
143 |
151 |
144 def SetValue(self, row, col, value): |
152 def SetValue(self, row, col, value): |
145 if col < len(self.colnames): |
153 if col < len(self.colnames): |
146 self.data[row][self.GetColLabelValue(col, False)] = value |
154 colname = self.GetColLabelValue(col, False) |
|
155 if colname == "Triggering": |
|
156 value = TASKTRIGGERINGOPTIONS_DICT[value] |
|
157 self.data[row][colname] = value |
147 |
158 |
148 def SetValueByName(self, row, colname, value): |
159 def SetValueByName(self, row, colname, value): |
149 if colname in self.colnames: |
160 if colname in self.colnames: |
150 self.data[row][colname] = value |
161 self.data[row][colname] = value |
151 |
162 |
201 for col in range(self.GetNumberCols()): |
212 for col in range(self.GetNumberCols()): |
202 editor = None |
213 editor = None |
203 renderer = None |
214 renderer = None |
204 colname = self.GetColLabelValue(col, False) |
215 colname = self.GetColLabelValue(col, False) |
205 grid.SetReadOnly(row, col, False) |
216 grid.SetReadOnly(row, col, False) |
206 if colname in ["Name","Interval"]: |
217 if colname in ["Name", "Interval"]: |
207 editor = wx.grid.GridCellTextEditor() |
218 editor = wx.grid.GridCellTextEditor() |
208 renderer = wx.grid.GridCellStringRenderer() |
219 renderer = wx.grid.GridCellStringRenderer() |
209 if colname == "Interval" and self.GetValueByName(row, "Single") != "": |
220 if colname == "Interval" and self.GetValueByName(row, "Triggering") != "Cyclic": |
210 grid.SetReadOnly(row, col, True) |
221 grid.SetReadOnly(row, col, True) |
211 elif colname == "Single": |
222 elif colname == "Single": |
212 editor = wx.grid.GridCellChoiceEditor() |
223 editor = wx.grid.GridCellChoiceEditor() |
213 editor.SetParameters(self.Parent.VariableList) |
224 editor.SetParameters(self.Parent.VariableList) |
214 if self.GetValueByName(row, "Interval") != "": |
225 if self.GetValueByName(row, "Triggering") != "Interrupt": |
215 grid.SetReadOnly(row, col, True) |
226 grid.SetReadOnly(row, col, True) |
|
227 elif colname == "Triggering": |
|
228 editor = wx.grid.GridCellChoiceEditor() |
|
229 editor.SetParameters(",".join([""] + GetTaskTriggeringOptions())) |
216 elif colname == "Type": |
230 elif colname == "Type": |
217 editor = wx.grid.GridCellChoiceEditor() |
231 editor = wx.grid.GridCellChoiceEditor() |
218 editor.SetParameters(self.Parent.TypeList) |
232 editor.SetParameters(self.Parent.TypeList) |
219 elif colname == "Priority": |
233 elif colname == "Priority": |
220 editor = wx.grid.GridCellNumberEditor() |
234 editor = wx.grid.GridCellNumberEditor() |
436 |
459 |
437 self.ParentWindow = window |
460 self.ParentWindow = window |
438 self.Controler = controler |
461 self.Controler = controler |
439 self.TagName = tagname |
462 self.TagName = tagname |
440 |
463 |
441 self.TasksDefaultValue = {"Name" : "", "Single" : "", "Interval" : "", "Priority" : 0} |
464 self.TasksDefaultValue = {"Name" : "", "Triggering" : "", "Single" : "", "Interval" : "", "Priority" : 0} |
442 self.TasksTable = ResourceTable(self, [], GetTasksTableColnames()) |
465 self.TasksTable = ResourceTable(self, [], GetTasksTableColnames()) |
443 self.TasksTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT]) |
466 self.TasksTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT]) |
444 self.TasksTable.SetColSizes([200, 100, 100, 100]) |
467 self.TasksTable.SetColSizes([200, 100, 100, 100, 100]) |
445 self.TasksGrid.SetTable(self.TasksTable) |
468 self.TasksGrid.SetTable(self.TasksTable) |
446 self.TasksGrid.SetRowLabelSize(0) |
469 self.TasksGrid.SetRowLabelSize(0) |
447 self.TasksTable.ResetView(self.TasksGrid) |
470 self.TasksTable.ResetView(self.TasksGrid) |
448 |
471 |
449 self.InstancesDefaultValue = {"Name" : "", "Type" : "", "Task" : ""} |
472 self.InstancesDefaultValue = {"Name" : "", "Type" : "", "Task" : ""} |
497 self.Controler.BufferProject() |
520 self.Controler.BufferProject() |
498 self.ParentWindow.RefreshTitle() |
521 self.ParentWindow.RefreshTitle() |
499 self.ParentWindow.RefreshFileMenu() |
522 self.ParentWindow.RefreshFileMenu() |
500 self.ParentWindow.RefreshEditMenu() |
523 self.ParentWindow.RefreshEditMenu() |
501 |
524 |
502 def RefreshView(self): |
525 def RefreshView(self, task_select=None, instance_select=None): |
503 tasks, instances = self.Controler.GetEditedResourceInfos(self.TagName) |
526 tasks, instances = self.Controler.GetEditedResourceInfos(self.TagName) |
504 self.TasksTable.SetData(tasks) |
527 self.TasksTable.SetData(tasks) |
505 self.InstancesTable.SetData(instances) |
528 self.InstancesTable.SetData(instances) |
506 self.RefreshTypeList() |
529 self.RefreshTypeList() |
507 self.RefreshTaskList() |
530 self.RefreshTaskList() |
508 self.RefreshVariableList() |
531 self.RefreshVariableList() |
|
532 self.TasksTable.ResetView(self.TasksGrid) |
509 self.InstancesTable.ResetView(self.InstancesGrid) |
533 self.InstancesTable.ResetView(self.InstancesGrid) |
510 self.TasksTable.ResetView(self.TasksGrid) |
534 if task_select is not None and len(tasks) > 0: |
511 |
535 if task_select == -1: |
|
536 task_select = len(tasks) - 1 |
|
537 else: |
|
538 task_select = min(task_select, len(tasks) - 1) |
|
539 col = self.TasksGrid.GetGridCursorCol() |
|
540 self.TasksGrid.SetGridCursor(task_select, col) |
|
541 self.TasksGrid.MakeCellVisible(instance_select, col) |
|
542 self.TasksGrid.SetFocus() |
|
543 if instance_select is not None and len(instances) > 0: |
|
544 if instance_select == -1: |
|
545 instance_select = len(instances) - 1 |
|
546 else: |
|
547 task_select = min(task_select, len(instances) - 1) |
|
548 col = self.InstancesGrid.GetGridCursorCol() |
|
549 self.InstancesGrid.SetGridCursor(instance_select, col) |
|
550 self.InstancesGrid.MakeCellVisible(instance_select, col) |
|
551 self.InstancesGrid.SetFocus() |
|
552 |
512 def RefreshScaling(self, refresh=True): |
553 def RefreshScaling(self, refresh=True): |
513 pass |
554 pass |
514 |
555 |
|
556 def CloseTasksGridEditControl(self): |
|
557 row = self.TasksGrid.GetGridCursorRow() |
|
558 col = self.TasksGrid.GetGridCursorCol() |
|
559 self.TasksGrid.SetGridCursor(row, col) |
|
560 |
515 def OnAddTaskButton(self, event): |
561 def OnAddTaskButton(self, event): |
516 self.TasksTable.AppendRow(self.TasksDefaultValue.copy()) |
562 self.CloseTasksGridEditControl() |
517 self.RefreshModel() |
563 if len(self.TasksTable.data) > 0: |
518 self.RefreshView() |
564 row = self.TasksGrid.GetGridCursorRow() + 1 |
|
565 else: |
|
566 row = -1 |
|
567 self.TasksTable.InsertRow(row, self.TasksDefaultValue.copy()) |
|
568 self.RefreshModel() |
|
569 self.RefreshView(task_select=row) |
519 event.Skip() |
570 event.Skip() |
520 |
571 |
521 def OnDeleteTaskButton(self, event): |
572 def OnDeleteTaskButton(self, event): |
|
573 self.CloseTasksGridEditControl() |
522 row = self.TasksGrid.GetGridCursorRow() |
574 row = self.TasksGrid.GetGridCursorRow() |
523 self.TasksTable.RemoveRow(row) |
575 self.TasksTable.RemoveRow(row) |
524 self.RefreshModel() |
576 self.RefreshModel() |
525 self.RefreshView() |
577 self.RefreshView(task_select=row) |
526 event.Skip() |
578 event.Skip() |
527 |
579 |
528 def OnUpTaskButton(self, event): |
580 def OnUpTaskButton(self, event): |
|
581 self.CloseTasksGridEditControl() |
529 row = self.TasksGrid.GetGridCursorRow() |
582 row = self.TasksGrid.GetGridCursorRow() |
530 self.TasksTable.MoveRow(row, -1, self.TasksGrid) |
583 new_row = self.TasksTable.MoveRow(row, -1) |
531 self.RefreshModel() |
584 self.RefreshModel() |
532 self.RefreshView() |
585 self.RefreshView(task_select=new_row) |
533 event.Skip() |
586 event.Skip() |
534 |
587 |
535 def OnDownTaskButton(self, event): |
588 def OnDownTaskButton(self, event): |
|
589 self.CloseTasksGridEditControl() |
536 row = self.TasksGrid.GetGridCursorRow() |
590 row = self.TasksGrid.GetGridCursorRow() |
537 self.TasksTable.MoveRow(row, 1, self.TasksGrid) |
591 new_row = self.TasksTable.MoveRow(row, 1) |
538 self.RefreshModel() |
592 self.RefreshModel() |
539 self.RefreshView() |
593 self.RefreshView(task_select=new_row) |
540 event.Skip() |
594 event.Skip() |
|
595 |
|
596 def CloseInstancesGridEditControl(self): |
|
597 row = self.InstancesGrid.GetGridCursorRow() |
|
598 col = self.InstancesGrid.GetGridCursorCol() |
|
599 self.InstancesGrid.SetGridCursor(row, col) |
541 |
600 |
542 def OnAddInstanceButton(self, event): |
601 def OnAddInstanceButton(self, event): |
543 self.InstancesTable.AppendRow(self.InstancesDefaultValue.copy()) |
602 self.CloseInstancesGridEditControl() |
544 self.RefreshModel() |
603 if len(self.InstancesTable.data) > 0: |
545 self.RefreshView() |
604 row = self.InstancesGrid.GetGridCursorRow() + 1 |
|
605 else: |
|
606 row = -1 |
|
607 self.InstancesTable.InsertRow(row, self.InstancesDefaultValue.copy()) |
|
608 self.RefreshModel() |
|
609 self.RefreshView(instance_select=row) |
546 self.ParentWindow.RefreshInstancesTree() |
610 self.ParentWindow.RefreshInstancesTree() |
547 event.Skip() |
611 event.Skip() |
548 |
612 |
549 def OnDeleteInstanceButton(self, event): |
613 def OnDeleteInstanceButton(self, event): |
|
614 self.CloseInstancesGridEditControl() |
550 row = self.InstancesGrid.GetGridCursorRow() |
615 row = self.InstancesGrid.GetGridCursorRow() |
551 self.InstancesTable.RemoveRow(row) |
616 self.InstancesTable.RemoveRow(row) |
552 self.RefreshModel() |
617 self.RefreshModel() |
553 self.RefreshView() |
618 self.RefreshView(instance_select=row) |
554 self.ParentWindow.RefreshInstancesTree() |
619 self.ParentWindow.RefreshInstancesTree() |
555 event.Skip() |
620 event.Skip() |
556 |
621 |
557 def OnUpInstanceButton(self, event): |
622 def OnUpInstanceButton(self, event): |
|
623 self.CloseInstancesGridEditControl() |
558 row = self.InstancesGrid.GetGridCursorRow() |
624 row = self.InstancesGrid.GetGridCursorRow() |
559 self.InstancesTable.MoveRow(row, -1, self.InstancesGrid) |
625 new_row = self.InstancesTable.MoveRow(row, -1) |
560 self.RefreshModel() |
626 self.RefreshModel() |
561 self.RefreshView() |
627 self.RefreshView(instance_select=new_row) |
562 self.ParentWindow.RefreshInstancesTree() |
628 self.ParentWindow.RefreshInstancesTree() |
563 event.Skip() |
629 event.Skip() |
564 |
630 |
565 def OnDownInstanceButton(self, event): |
631 def OnDownInstanceButton(self, event): |
|
632 self.CloseInstancesGridEditControl() |
566 row = self.InstancesGrid.GetGridCursorRow() |
633 row = self.InstancesGrid.GetGridCursorRow() |
567 self.InstancesTable.MoveRow(row, 1, self.InstancesGrid) |
634 new_row = self.InstancesTable.MoveRow(row, 1) |
568 self.RefreshModel() |
635 self.RefreshModel() |
569 self.RefreshView() |
636 self.RefreshView(instance_select=new_row) |
570 self.ParentWindow.RefreshInstancesTree() |
637 self.ParentWindow.RefreshInstancesTree() |
571 event.Skip() |
638 event.Skip() |
572 |
639 |
573 def OnTasksGridCellChange(self, event): |
640 def OnTasksGridCellChange(self, event): |
574 row, col = event.GetRow(), event.GetCol() |
641 row, col = event.GetRow(), event.GetCol() |