403 |
397 |
404 self.staticText1 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT1, |
398 self.staticText1 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT1, |
405 label=_(u'Tasks:'), name='staticText2', parent=self, pos=wx.Point(0, |
399 label=_(u'Tasks:'), name='staticText2', parent=self, pos=wx.Point(0, |
406 0), size=wx.DefaultSize, style=wx.ALIGN_CENTER) |
400 0), size=wx.DefaultSize, style=wx.ALIGN_CENTER) |
407 |
401 |
408 self.TasksGrid = wx.grid.Grid(id=ID_RESOURCEEDITORTASKSGRID, |
402 self.TasksGrid = CustomGrid(id=ID_RESOURCEEDITORTASKSGRID, |
409 name='TasksGrid', parent=self, pos=wx.Point(0, 0), |
403 name='TasksGrid', parent=self, pos=wx.Point(0, 0), |
410 size=wx.Size(-1, -1), style=wx.VSCROLL) |
404 size=wx.Size(-1, -1), style=wx.VSCROLL) |
411 self.TasksGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False, |
405 self.TasksGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False, |
412 'Sans')) |
406 'Sans')) |
413 self.TasksGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL, |
407 self.TasksGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL, |
414 False, 'Sans')) |
408 False, 'Sans')) |
415 if wx.VERSION >= (2, 5, 0): |
409 if wx.VERSION >= (2, 6, 0): |
416 self.TasksGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnTasksGridCellChange) |
410 self.TasksGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnTasksGridCellChange) |
417 else: |
411 else: |
418 wx.grid.EVT_GRID_CELL_CHANGE(self.TasksGrid, self.OnTasksGridCellChange) |
412 wx.grid.EVT_GRID_CELL_CHANGE(self.TasksGrid, self.OnTasksGridCellChange) |
419 |
413 |
420 self.AddTaskButton = wx.Button(id=ID_RESOURCEEDITORADDTASKBUTTON, label=_('Add Task'), |
414 self.AddTaskButton = wx.Button(id=ID_RESOURCEEDITORADDTASKBUTTON, label=_('Add Task'), |
421 name='AddTaskButton', parent=self, pos=wx.Point(0, 0), |
415 name='AddTaskButton', parent=self, pos=wx.Point(0, 0), |
422 size=wx.DefaultSize, style=0) |
416 size=wx.DefaultSize, style=0) |
423 self.Bind(wx.EVT_BUTTON, self.OnAddTaskButton, id=ID_RESOURCEEDITORADDTASKBUTTON) |
417 |
424 |
|
425 self.DeleteTaskButton = wx.Button(id=ID_RESOURCEEDITORDELETETASKBUTTON, label=_('Delete Task'), |
418 self.DeleteTaskButton = wx.Button(id=ID_RESOURCEEDITORDELETETASKBUTTON, label=_('Delete Task'), |
426 name='DeleteTaskButton', parent=self, pos=wx.Point(0, 0), |
419 name='DeleteTaskButton', parent=self, pos=wx.Point(0, 0), |
427 size=wx.DefaultSize, style=0) |
420 size=wx.DefaultSize, style=0) |
428 self.Bind(wx.EVT_BUTTON, self.OnDeleteTaskButton, id=ID_RESOURCEEDITORDELETETASKBUTTON) |
421 |
429 |
|
430 self.UpTaskButton = wx.Button(id=ID_RESOURCEEDITORUPTASKBUTTON, label='^', |
422 self.UpTaskButton = wx.Button(id=ID_RESOURCEEDITORUPTASKBUTTON, label='^', |
431 name='UpTaskButton', parent=self, pos=wx.Point(0, 0), |
423 name='UpTaskButton', parent=self, pos=wx.Point(0, 0), |
432 size=wx.Size(32, 32), style=0) |
424 size=wx.Size(32, 32), style=0) |
433 self.Bind(wx.EVT_BUTTON, self.OnUpTaskButton, id=ID_RESOURCEEDITORUPTASKBUTTON) |
425 |
434 |
|
435 self.DownTaskButton = wx.Button(id=ID_RESOURCEEDITORDOWNTASKBUTTON, label='v', |
426 self.DownTaskButton = wx.Button(id=ID_RESOURCEEDITORDOWNTASKBUTTON, label='v', |
436 name='DownTaskButton', parent=self, pos=wx.Point(0, 0), |
427 name='DownTaskButton', parent=self, pos=wx.Point(0, 0), |
437 size=wx.Size(32, 32), style=0) |
428 size=wx.Size(32, 32), style=0) |
438 self.Bind(wx.EVT_BUTTON, self.OnDownTaskButton, id=ID_RESOURCEEDITORDOWNTASKBUTTON) |
429 |
439 |
|
440 self.staticText2 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT2, |
430 self.staticText2 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT2, |
441 label=_(u'Instances:'), name='staticText1', parent=self, |
431 label=_(u'Instances:'), name='staticText1', parent=self, |
442 pos=wx.Point(0, 0), size=wx.DefaultSize, style=wx.ALIGN_CENTER) |
432 pos=wx.Point(0, 0), size=wx.DefaultSize, style=wx.ALIGN_CENTER) |
443 |
433 |
444 self.InstancesGrid = wx.grid.Grid(id=ID_RESOURCEEDITORINSTANCESGRID, |
434 self.InstancesGrid = CustomGrid(id=ID_RESOURCEEDITORINSTANCESGRID, |
445 name='InstancesGrid', parent=self, pos=wx.Point(0, 0), |
435 name='InstancesGrid', parent=self, pos=wx.Point(0, 0), |
446 size=wx.Size(-1, -1), style=wx.VSCROLL) |
436 size=wx.Size(-1, -1), style=wx.VSCROLL) |
447 self.InstancesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False, |
437 self.InstancesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False, |
448 'Sans')) |
438 'Sans')) |
449 self.InstancesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL, |
439 self.InstancesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL, |
450 False, 'Sans')) |
440 False, 'Sans')) |
451 if wx.VERSION >= (2, 5, 0): |
441 if wx.VERSION >= (2, 6, 0): |
452 self.InstancesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnInstancesGridCellChange) |
442 self.InstancesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnInstancesGridCellChange) |
453 else: |
443 else: |
454 wx.grid.EVT_GRID_CELL_CHANGE(self.InstancesGrid, self.OnInstancesGridCellChange) |
444 wx.grid.EVT_GRID_CELL_CHANGE(self.InstancesGrid, self.OnInstancesGridCellChange) |
455 |
445 |
456 self.AddInstanceButton = wx.Button(id=ID_RESOURCEEDITORADDINSTANCEBUTTON, label=_('Add Instance'), |
446 self.AddInstanceButton = wx.Button(id=ID_RESOURCEEDITORADDINSTANCEBUTTON, label=_('Add Instance'), |
457 name='AddInstanceButton', parent=self, pos=wx.Point(0, 0), |
447 name='AddInstanceButton', parent=self, pos=wx.Point(0, 0), |
458 size=wx.DefaultSize, style=0) |
448 size=wx.DefaultSize, style=0) |
459 self.Bind(wx.EVT_BUTTON, self.OnAddInstanceButton, id=ID_RESOURCEEDITORADDINSTANCEBUTTON) |
449 |
460 |
|
461 self.DeleteInstanceButton = wx.Button(id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON, label=_('Delete Instance'), |
450 self.DeleteInstanceButton = wx.Button(id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON, label=_('Delete Instance'), |
462 name='DeleteInstanceButton', parent=self, pos=wx.Point(0, 0), |
451 name='DeleteInstanceButton', parent=self, pos=wx.Point(0, 0), |
463 size=wx.DefaultSize, style=0) |
452 size=wx.DefaultSize, style=0) |
464 self.Bind(wx.EVT_BUTTON, self.OnDeleteInstanceButton, id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON) |
453 |
465 |
|
466 self.UpInstanceButton = wx.Button(id=ID_RESOURCEEDITORUPINSTANCEBUTTON, label='^', |
454 self.UpInstanceButton = wx.Button(id=ID_RESOURCEEDITORUPINSTANCEBUTTON, label='^', |
467 name='UpInstanceButton', parent=self, pos=wx.Point(0, 0), |
455 name='UpInstanceButton', parent=self, pos=wx.Point(0, 0), |
468 size=wx.Size(32, 32), style=0) |
456 size=wx.Size(32, 32), style=0) |
469 self.Bind(wx.EVT_BUTTON, self.OnUpInstanceButton, id=ID_RESOURCEEDITORUPINSTANCEBUTTON) |
457 |
470 |
|
471 self.DownInstanceButton = wx.Button(id=ID_RESOURCEEDITORDOWNINSTANCEBUTTON, label='v', |
458 self.DownInstanceButton = wx.Button(id=ID_RESOURCEEDITORDOWNINSTANCEBUTTON, label='v', |
472 name='DownInstanceButton', parent=self, pos=wx.Point(0, 0), |
459 name='DownInstanceButton', parent=self, pos=wx.Point(0, 0), |
473 size=wx.Size(32, 32), style=0) |
460 size=wx.Size(32, 32), style=0) |
474 self.Bind(wx.EVT_BUTTON, self.OnDownInstanceButton, id=ID_RESOURCEEDITORDOWNINSTANCEBUTTON) |
461 |
475 |
|
476 self._init_sizers() |
462 self._init_sizers() |
477 |
463 |
478 def __init__(self, parent, tagname, window, controler): |
464 def __init__(self, parent, tagname, window, controler): |
479 self._init_ctrls(parent) |
465 self._init_ctrls(parent) |
480 |
466 |
488 self.TasksDefaultValue = {"Name" : "", "Triggering" : "", "Single" : "", "Interval" : "", "Priority" : 0} |
474 self.TasksDefaultValue = {"Name" : "", "Triggering" : "", "Single" : "", "Interval" : "", "Priority" : 0} |
489 self.TasksTable = ResourceTable(self, [], GetTasksTableColnames()) |
475 self.TasksTable = ResourceTable(self, [], GetTasksTableColnames()) |
490 self.TasksTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT]) |
476 self.TasksTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT]) |
491 self.TasksTable.SetColSizes([200, 100, 100, 150, 100]) |
477 self.TasksTable.SetColSizes([200, 100, 100, 150, 100]) |
492 self.TasksGrid.SetTable(self.TasksTable) |
478 self.TasksGrid.SetTable(self.TasksTable) |
|
479 self.TasksGrid.SetButtons({"Add": self.AddTaskButton, |
|
480 "Delete": self.DeleteTaskButton, |
|
481 "Up": self.UpTaskButton, |
|
482 "Down": self.DownTaskButton}) |
|
483 |
|
484 def _AddTask(new_row): |
|
485 self.TasksTable.InsertRow(new_row, self.TasksDefaultValue.copy()) |
|
486 self.RefreshModel() |
|
487 self.RefreshView() |
|
488 return new_row |
|
489 setattr(self.TasksGrid, "_AddRow", _AddTask) |
|
490 |
|
491 def _DeleteTask(row): |
|
492 self.TasksTable.RemoveRow(row) |
|
493 self.RefreshModel() |
|
494 self.RefreshView() |
|
495 setattr(self.TasksGrid, "_DeleteRow", _DeleteTask) |
|
496 |
|
497 def _MoveTask(row, move): |
|
498 new_row = self.TasksTable.MoveRow(row, move) |
|
499 if new_row != row: |
|
500 self.RefreshModel() |
|
501 self.RefreshView() |
|
502 return new_row |
|
503 setattr(self.TasksGrid, "_MoveRow", _MoveTask) |
|
504 |
493 self.TasksGrid.SetRowLabelSize(0) |
505 self.TasksGrid.SetRowLabelSize(0) |
494 self.TasksTable.ResetView(self.TasksGrid) |
506 self.TasksTable.ResetView(self.TasksGrid) |
495 |
507 self.TasksGrid.RefreshButtons() |
|
508 |
496 self.InstancesDefaultValue = {"Name" : "", "Type" : "", "Task" : ""} |
509 self.InstancesDefaultValue = {"Name" : "", "Type" : "", "Task" : ""} |
497 self.InstancesTable = ResourceTable(self, [], GetInstancesTableColnames()) |
510 self.InstancesTable = ResourceTable(self, [], GetInstancesTableColnames()) |
498 self.InstancesTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]) |
511 self.InstancesTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]) |
499 self.InstancesTable.SetColSizes([200, 150, 150]) |
512 self.InstancesTable.SetColSizes([200, 150, 150]) |
500 self.InstancesGrid.SetTable(self.InstancesTable) |
513 self.InstancesGrid.SetTable(self.InstancesTable) |
|
514 self.InstancesGrid.SetButtons({"Add": self.AddInstanceButton, |
|
515 "Delete": self.DeleteInstanceButton, |
|
516 "Up": self.UpInstanceButton, |
|
517 "Down": self.DownInstanceButton}) |
|
518 |
|
519 def _AddInstance(new_row): |
|
520 self.InstancesTable.InsertRow(new_row, self.InstancesDefaultValue.copy()) |
|
521 self.RefreshModel() |
|
522 self.RefreshView() |
|
523 return new_row |
|
524 setattr(self.InstancesGrid, "_AddRow", _AddInstance) |
|
525 |
|
526 def _DeleteInstance(row): |
|
527 self.InstancesTable.RemoveRow(row) |
|
528 self.RefreshModel() |
|
529 self.RefreshView() |
|
530 setattr(self.InstancesGrid, "_DeleteRow", _DeleteInstance) |
|
531 |
|
532 def _MoveInstance(row, move): |
|
533 new_row = max(0, min(row + move, self.InstancesTable.GetNumberRows() - 1)) |
|
534 if new_row != row: |
|
535 if self.InstancesTable.GetValueByName(row, "Task") != self.InstancesTable.GetValueByName(new_row, "Task"): |
|
536 return row |
|
537 self.InstancesTable.MoveRow(row, move) |
|
538 self.RefreshModel() |
|
539 self.RefreshView() |
|
540 return new_row |
|
541 setattr(self.InstancesGrid, "_MoveRow", _MoveInstance) |
|
542 |
|
543 def _RefreshInstanceButtons(): |
|
544 rows = self.InstancesTable.GetNumberRows() |
|
545 row = self.InstancesGrid.GetGridCursorRow() |
|
546 self.DeleteInstanceButton.Enable(rows > 0) |
|
547 self.UpInstanceButton.Enable(row > 0 and |
|
548 self.InstancesTable.GetValueByName(row, "Task") == self.InstancesTable.GetValueByName(row - 1, "Task")) |
|
549 self.DownInstanceButton.Enable(0 <= row < rows - 1 and |
|
550 self.InstancesTable.GetValueByName(row, "Task") == self.InstancesTable.GetValueByName(row + 1, "Task")) |
|
551 setattr(self.InstancesGrid, "RefreshButtons", _RefreshInstanceButtons) |
|
552 |
501 self.InstancesGrid.SetRowLabelSize(0) |
553 self.InstancesGrid.SetRowLabelSize(0) |
502 self.InstancesTable.ResetView(self.InstancesGrid) |
554 self.InstancesTable.ResetView(self.InstancesGrid) |
503 |
555 self.InstancesGrid.RefreshButtons() |
|
556 |
|
557 self.TasksGrid.SetFocus() |
|
558 |
504 def __del__(self): |
559 def __del__(self): |
505 self.RefreshHighlightsTimer.Stop() |
560 self.RefreshHighlightsTimer.Stop() |
506 |
561 |
507 def SetTagName(self, tagname): |
562 def SetTagName(self, tagname): |
508 self.TagName = tagname |
563 self.TagName = tagname |
547 self.Controler.BufferProject() |
602 self.Controler.BufferProject() |
548 self.ParentWindow.RefreshTitle() |
603 self.ParentWindow.RefreshTitle() |
549 self.ParentWindow.RefreshFileMenu() |
604 self.ParentWindow.RefreshFileMenu() |
550 self.ParentWindow.RefreshEditMenu() |
605 self.ParentWindow.RefreshEditMenu() |
551 |
606 |
552 def RefreshView(self, task_select=None, instance_select=None): |
607 def RefreshView(self): |
553 tasks, instances = self.Controler.GetEditedResourceInfos(self.TagName) |
608 tasks, instances = self.Controler.GetEditedResourceInfos(self.TagName) |
554 self.TasksTable.SetData(tasks) |
609 self.TasksTable.SetData(tasks) |
555 self.InstancesTable.SetData(instances) |
610 self.InstancesTable.SetData(instances) |
556 self.RefreshTypeList() |
611 self.RefreshTypeList() |
557 self.RefreshTaskList() |
612 self.RefreshTaskList() |
558 self.RefreshVariableList() |
613 self.RefreshVariableList() |
559 self.TasksTable.ResetView(self.TasksGrid) |
614 self.TasksTable.ResetView(self.TasksGrid) |
560 self.InstancesTable.ResetView(self.InstancesGrid) |
615 self.InstancesTable.ResetView(self.InstancesGrid) |
561 if task_select is not None and len(tasks) > 0: |
616 self.TasksGrid.RefreshButtons() |
562 if task_select == -1: |
617 self.InstancesGrid.RefreshButtons() |
563 task_select = len(tasks) - 1 |
|
564 else: |
|
565 task_select = min(task_select, len(tasks) - 1) |
|
566 col = self.TasksGrid.GetGridCursorCol() |
|
567 self.TasksGrid.SetGridCursor(task_select, col) |
|
568 self.TasksGrid.MakeCellVisible(task_select, col) |
|
569 self.TasksGrid.SetFocus() |
|
570 if instance_select is not None and len(instances) > 0: |
|
571 if instance_select == -1: |
|
572 instance_select = len(instances) - 1 |
|
573 else: |
|
574 instance_select = min(instance_select, len(instances) - 1) |
|
575 col = self.InstancesGrid.GetGridCursorCol() |
|
576 self.InstancesGrid.SetGridCursor(instance_select, col) |
|
577 self.InstancesGrid.MakeCellVisible(instance_select, col) |
|
578 self.InstancesGrid.SetFocus() |
|
579 |
618 |
580 def RefreshScaling(self, refresh=True): |
619 def RefreshScaling(self, refresh=True): |
581 pass |
620 pass |
582 |
621 |
583 def CloseTasksGridEditControl(self): |
|
584 row = self.TasksGrid.GetGridCursorRow() |
|
585 col = self.TasksGrid.GetGridCursorCol() |
|
586 self.TasksGrid.SetGridCursor(row, col) |
|
587 |
|
588 def OnAddTaskButton(self, event): |
|
589 self.CloseTasksGridEditControl() |
|
590 if len(self.TasksTable.data) > 0: |
|
591 row = self.TasksGrid.GetGridCursorRow() + 1 |
|
592 else: |
|
593 row = -1 |
|
594 self.TasksTable.InsertRow(row, self.TasksDefaultValue.copy()) |
|
595 self.RefreshModel() |
|
596 self.RefreshView(task_select=row) |
|
597 event.Skip() |
|
598 |
|
599 def OnDeleteTaskButton(self, event): |
|
600 self.CloseTasksGridEditControl() |
|
601 row = self.TasksGrid.GetGridCursorRow() |
|
602 self.TasksTable.RemoveRow(row) |
|
603 self.RefreshModel() |
|
604 self.RefreshView(task_select=row) |
|
605 event.Skip() |
|
606 |
|
607 def OnUpTaskButton(self, event): |
|
608 self.CloseTasksGridEditControl() |
|
609 row = self.TasksGrid.GetGridCursorRow() |
|
610 new_row = self.TasksTable.MoveRow(row, -1) |
|
611 self.RefreshModel() |
|
612 self.RefreshView(task_select=new_row) |
|
613 event.Skip() |
|
614 |
|
615 def OnDownTaskButton(self, event): |
|
616 self.CloseTasksGridEditControl() |
|
617 row = self.TasksGrid.GetGridCursorRow() |
|
618 new_row = self.TasksTable.MoveRow(row, 1) |
|
619 self.RefreshModel() |
|
620 self.RefreshView(task_select=new_row) |
|
621 event.Skip() |
|
622 |
|
623 def CloseInstancesGridEditControl(self): |
|
624 row = self.InstancesGrid.GetGridCursorRow() |
|
625 col = self.InstancesGrid.GetGridCursorCol() |
|
626 self.InstancesGrid.SetGridCursor(row, col) |
|
627 |
|
628 def OnAddInstanceButton(self, event): |
|
629 self.CloseInstancesGridEditControl() |
|
630 if len(self.InstancesTable.data) > 0: |
|
631 row = self.InstancesGrid.GetGridCursorRow() + 1 |
|
632 else: |
|
633 row = -1 |
|
634 self.InstancesTable.InsertRow(row, self.InstancesDefaultValue.copy()) |
|
635 self.RefreshModel() |
|
636 self.RefreshView(instance_select=row) |
|
637 self.ParentWindow.RefreshInstancesTree() |
|
638 event.Skip() |
|
639 |
|
640 def OnDeleteInstanceButton(self, event): |
|
641 self.CloseInstancesGridEditControl() |
|
642 row = self.InstancesGrid.GetGridCursorRow() |
|
643 self.InstancesTable.RemoveRow(row) |
|
644 self.RefreshModel() |
|
645 self.RefreshView(instance_select=row) |
|
646 self.ParentWindow.RefreshInstancesTree() |
|
647 event.Skip() |
|
648 |
|
649 def OnUpInstanceButton(self, event): |
|
650 self.CloseInstancesGridEditControl() |
|
651 row = self.InstancesGrid.GetGridCursorRow() |
|
652 new_row = self.InstancesTable.MoveRow(row, -1) |
|
653 self.RefreshModel() |
|
654 self.RefreshView(instance_select=new_row) |
|
655 self.ParentWindow.RefreshInstancesTree() |
|
656 event.Skip() |
|
657 |
|
658 def OnDownInstanceButton(self, event): |
|
659 self.CloseInstancesGridEditControl() |
|
660 row = self.InstancesGrid.GetGridCursorRow() |
|
661 new_row = self.InstancesTable.MoveRow(row, 1) |
|
662 self.RefreshModel() |
|
663 self.RefreshView(instance_select=new_row) |
|
664 self.ParentWindow.RefreshInstancesTree() |
|
665 event.Skip() |
|
666 |
|
667 def OnTasksGridCellChange(self, event): |
622 def OnTasksGridCellChange(self, event): |
668 row, col = event.GetRow(), event.GetCol() |
623 row, col = event.GetRow(), event.GetCol() |
669 if self.TasksTable.GetColLabelValue(event.GetCol()) == "Name": |
624 if self.TasksTable.GetColLabelValue(event.GetCol()) == "Name": |
670 tasklist = self.TaskList.split(",") |
625 tasklist = self.TaskList.split(",") |
671 for i in xrange(self.TasksTable.GetNumberRows()): |
626 for i in xrange(self.TasksTable.GetNumberRows()): |