649 |
649 |
650 process_variables_header = wx.BoxSizer(wx.HORIZONTAL) |
650 process_variables_header = wx.BoxSizer(wx.HORIZONTAL) |
651 |
651 |
652 process_variables_label = wx.StaticText(self.EthercatMasterEditor, |
652 process_variables_label = wx.StaticText(self.EthercatMasterEditor, |
653 label=_("Process variables mapped between nodes:")) |
653 label=_("Process variables mapped between nodes:")) |
654 process_variables_header.AddWindow(process_variables_label, 1, |
654 process_variables_header.Add(process_variables_label, 1, |
655 flag=wx.ALIGN_CENTER_VERTICAL) |
655 flag=wx.ALIGN_CENTER_VERTICAL) |
656 |
656 |
657 for name, bitmap, help in [ |
657 for name, bitmap, help in [ |
658 ("AddVariableButton", "add_element", _("Add process variable")), |
658 ("AddVariableButton", "add_element", _("Add process variable")), |
659 ("DeleteVariableButton", "remove_element", _("Remove process variable")), |
659 ("DeleteVariableButton", "remove_element", _("Remove process variable")), |
660 ("UpVariableButton", "up", _("Move process variable up")), |
660 ("UpVariableButton", "up", _("Move process variable up")), |
661 ("DownVariableButton", "down", _("Move process variable down"))]: |
661 ("DownVariableButton", "down", _("Move process variable down"))]: |
662 button = wx.lib.buttons.GenBitmapButton(self.EthercatMasterEditor, bitmap=GetBitmap(bitmap), |
662 button = wx.lib.buttons.GenBitmapButton(self.EthercatMasterEditor, bitmap=GetBitmap(bitmap), |
663 size=wx.Size(28, 28), style=wx.NO_BORDER) |
663 size=wx.Size(28, 28), style=wx.NO_BORDER) |
664 button.SetToolTipString(help) |
664 button.SetToolTip(help) |
665 setattr(self, name, button) |
665 setattr(self, name, button) |
666 process_variables_header.AddWindow(button, border=5, flag=wx.LEFT) |
666 process_variables_header.Add(button, border=5, flag=wx.LEFT) |
667 |
667 |
668 self.ProcessVariablesGrid = CustomGrid(self.EthercatMasterEditor, style=wx.VSCROLL) |
668 self.ProcessVariablesGrid = CustomGrid(self.EthercatMasterEditor, style=wx.VSCROLL) |
669 self.ProcessVariablesGrid.SetMinSize(wx.Size(0, 150)) |
669 self.ProcessVariablesGrid.SetMinSize(wx.Size(0, 150)) |
670 self.ProcessVariablesGrid.SetDropTarget(ProcessVariableDropTarget(self)) |
670 self.ProcessVariablesGrid.SetDropTarget(ProcessVariableDropTarget(self)) |
671 self.ProcessVariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, |
671 self.ProcessVariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGING, |
672 self.OnProcessVariablesGridCellChange) |
672 self.OnProcessVariablesGridCellChange) |
673 self.ProcessVariablesGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, |
673 self.ProcessVariablesGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, |
674 self.OnProcessVariablesGridCellLeftClick) |
674 self.OnProcessVariablesGridCellLeftClick) |
675 self.ProcessVariablesGrid.Bind(wx.EVT_KEY_DOWN, self.OnProcessVariablesGridKeyDown) |
675 self.ProcessVariablesGrid.Bind(wx.EVT_KEY_DOWN, self.OnProcessVariablesGridKeyDown) |
676 |
676 |
677 startup_commands_header = wx.BoxSizer(wx.HORIZONTAL) |
677 startup_commands_header = wx.BoxSizer(wx.HORIZONTAL) |
678 |
678 |
679 startup_commands_label = wx.StaticText(self.EthercatMasterEditor, |
679 startup_commands_label = wx.StaticText(self.EthercatMasterEditor, |
680 label=_("Startup service variables assignments:")) |
680 label=_("Startup service variables assignments:")) |
681 startup_commands_header.AddWindow(startup_commands_label, 1, |
681 startup_commands_header.Add(startup_commands_label, 1, |
682 flag=wx.ALIGN_CENTER_VERTICAL) |
682 flag=wx.ALIGN_CENTER_VERTICAL) |
683 |
683 |
684 for name, bitmap, help in [ |
684 for name, bitmap, help in [ |
685 ("AddCommandButton", "add_element", _("Add startup service variable")), |
685 ("AddCommandButton", "add_element", _("Add startup service variable")), |
686 ("DeleteCommandButton", "remove_element", _("Remove startup service variable"))]: |
686 ("DeleteCommandButton", "remove_element", _("Remove startup service variable"))]: |
687 button = wx.lib.buttons.GenBitmapButton(self.EthercatMasterEditor, bitmap=GetBitmap(bitmap), |
687 button = wx.lib.buttons.GenBitmapButton(self.EthercatMasterEditor, bitmap=GetBitmap(bitmap), |
688 size=wx.Size(28, 28), style=wx.NO_BORDER) |
688 size=wx.Size(28, 28), style=wx.NO_BORDER) |
689 button.SetToolTipString(help) |
689 button.SetToolTip(help) |
690 setattr(self, name, button) |
690 setattr(self, name, button) |
691 startup_commands_header.AddWindow(button, border=5, flag=wx.LEFT) |
691 startup_commands_header.Add(button, border=5, flag=wx.LEFT) |
692 |
692 |
693 self.StartupCommandsGrid = CustomGrid(self.EthercatMasterEditor, style=wx.VSCROLL) |
693 self.StartupCommandsGrid = CustomGrid(self.EthercatMasterEditor, style=wx.VSCROLL) |
694 self.StartupCommandsGrid.SetDropTarget(StartupCommandDropTarget(self)) |
694 self.StartupCommandsGrid.SetDropTarget(StartupCommandDropTarget(self)) |
695 self.StartupCommandsGrid.SetMinSize(wx.Size(0, 150)) |
695 self.StartupCommandsGrid.SetMinSize(wx.Size(0, 150)) |
696 self.StartupCommandsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, |
696 self.StartupCommandsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGING, |
697 self.OnStartupCommandsGridCellChange) |
697 self.OnStartupCommandsGridCellChange) |
698 self.StartupCommandsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, |
698 self.StartupCommandsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, |
699 self.OnStartupCommandsGridEditorShow) |
699 self.OnStartupCommandsGridEditorShow) |
700 |
700 |
701 self.NodesVariables = MasterNodesVariablesSizer(self.EthercatMasterEditor, self.Controler) |
701 self.NodesVariables = MasterNodesVariablesSizer(self.EthercatMasterEditor, self.Controler) |
702 |
702 |
703 main_staticbox = wx.StaticBox(self.EthercatMasterEditor, label=_("Node filter:")) |
703 main_staticbox = wx.StaticBox(self.EthercatMasterEditor, label=_("Node filter:")) |
704 staticbox_sizer = wx.StaticBoxSizer(main_staticbox, wx.VERTICAL) |
704 staticbox_sizer = wx.StaticBoxSizer(main_staticbox, wx.VERTICAL) |
705 self.EthercatMasterEditorSizer.AddSizer(staticbox_sizer, 0, border=10, flag=wx.GROW | wx.ALL) |
705 self.EthercatMasterEditorSizer.Add(staticbox_sizer, 0, border=10, flag=wx.GROW | wx.ALL) |
706 |
706 |
707 main_staticbox_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=6, vgap=0) |
707 main_staticbox_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=6, vgap=0) |
708 main_staticbox_sizer.AddGrowableCol(0) |
708 main_staticbox_sizer.AddGrowableCol(0) |
709 main_staticbox_sizer.AddGrowableRow(2) |
709 main_staticbox_sizer.AddGrowableRow(2) |
710 main_staticbox_sizer.AddGrowableRow(4) |
710 main_staticbox_sizer.AddGrowableRow(4) |
711 main_staticbox_sizer.AddGrowableRow(5) |
711 main_staticbox_sizer.AddGrowableRow(5) |
712 staticbox_sizer.AddSizer(main_staticbox_sizer, 1, flag=wx.GROW) |
712 staticbox_sizer.Add(main_staticbox_sizer, 1, flag=wx.GROW) |
713 main_staticbox_sizer.AddWindow(self.NodesFilter, border=5, flag=wx.GROW | wx.ALL) |
713 main_staticbox_sizer.Add(self.NodesFilter, border=5, flag=wx.GROW | wx.ALL) |
714 main_staticbox_sizer.AddSizer(process_variables_header, border=5, |
714 main_staticbox_sizer.Add(process_variables_header, border=5, |
715 flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
715 flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
716 main_staticbox_sizer.AddWindow(self.ProcessVariablesGrid, 1, |
716 main_staticbox_sizer.Add(self.ProcessVariablesGrid, 1, |
717 border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
717 border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
718 main_staticbox_sizer.AddSizer(startup_commands_header, |
718 main_staticbox_sizer.Add(startup_commands_header, |
719 border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
719 border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
720 main_staticbox_sizer.AddWindow(self.StartupCommandsGrid, 1, |
720 main_staticbox_sizer.Add(self.StartupCommandsGrid, 1, |
721 border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
721 border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
722 |
722 |
723 second_staticbox = wx.StaticBox(self.EthercatMasterEditor, label=_("Nodes variables filter:")) |
723 second_staticbox = wx.StaticBox(self.EthercatMasterEditor, label=_("Nodes variables filter:")) |
724 second_staticbox_sizer = wx.StaticBoxSizer(second_staticbox, wx.VERTICAL) |
724 second_staticbox_sizer = wx.StaticBoxSizer(second_staticbox, wx.VERTICAL) |
725 second_staticbox_sizer.AddSizer(self.NodesVariables, 1, border=5, flag=wx.GROW | wx.ALL) |
725 second_staticbox_sizer.Add(self.NodesVariables, 1, border=5, flag=wx.GROW | wx.ALL) |
726 |
726 |
727 main_staticbox_sizer.AddSizer(second_staticbox_sizer, 1, |
727 main_staticbox_sizer.Add(second_staticbox_sizer, 1, |
728 border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
728 border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM) |
729 |
729 |
730 self.EthercatMasterEditor.SetSizer(self.EthercatMasterEditorSizer) |
730 self.EthercatMasterEditor.SetSizer(self.EthercatMasterEditorSizer) |
731 |
731 |
732 return self.EthercatMasterEditor |
732 return self.EthercatMasterEditor |
1111 self.AddGrowableRow(1) |
1111 self.AddGrowableRow(1) |
1112 self.AddGrowableRow(3) |
1112 self.AddGrowableRow(3) |
1113 |
1113 |
1114 ESI_files_label = wx.StaticText(parent, |
1114 ESI_files_label = wx.StaticText(parent, |
1115 label=_("ESI Files:")) |
1115 label=_("ESI Files:")) |
1116 self.AddWindow(ESI_files_label, border=10, |
1116 self.Add(ESI_files_label, border=10, |
1117 flag=wx.TOP | wx.LEFT | wx.RIGHT) |
1117 flag=wx.TOP | wx.LEFT | wx.RIGHT) |
1118 |
1118 |
1119 folder_tree_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=1, vgap=0) |
1119 folder_tree_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=1, vgap=0) |
1120 folder_tree_sizer.AddGrowableCol(0) |
1120 folder_tree_sizer.AddGrowableCol(0) |
1121 folder_tree_sizer.AddGrowableRow(0) |
1121 folder_tree_sizer.AddGrowableRow(0) |
1122 self.AddSizer(folder_tree_sizer, border=10, |
1122 self.Add(folder_tree_sizer, border=10, |
1123 flag=wx.GROW | wx.LEFT | wx.RIGHT) |
1123 flag=wx.GROW | wx.LEFT | wx.RIGHT) |
1124 |
1124 |
1125 self.ESIFiles = FolderTree(parent, self.GetPath(), editable=False) |
1125 self.ESIFiles = FolderTree(parent, self.GetPath(), editable=False) |
1126 self.ESIFiles.SetFilter(".xml") |
1126 self.ESIFiles.SetFilter(".xml") |
1127 folder_tree_sizer.AddWindow(self.ESIFiles, flag=wx.GROW) |
1127 folder_tree_sizer.Add(self.ESIFiles, flag=wx.GROW) |
1128 |
1128 |
1129 buttons_sizer = wx.BoxSizer(wx.VERTICAL) |
1129 buttons_sizer = wx.BoxSizer(wx.VERTICAL) |
1130 folder_tree_sizer.AddSizer(buttons_sizer, |
1130 folder_tree_sizer.Add(buttons_sizer, |
1131 flag=wx.ALIGN_CENTER_VERTICAL) |
1131 flag=wx.ALIGN_CENTER_VERTICAL) |
1132 |
1132 |
1133 for idx, (name, bitmap, help, callback) in enumerate(buttons): |
1133 for idx, (name, bitmap, help, callback) in enumerate(buttons): |
1134 button = wx.lib.buttons.GenBitmapButton(parent, |
1134 button = wx.lib.buttons.GenBitmapButton(parent, |
1135 bitmap=GetBitmap(bitmap), |
1135 bitmap=GetBitmap(bitmap), |
1136 size=wx.Size(28, 28), |
1136 size=wx.Size(28, 28), |
1137 style=wx.NO_BORDER) |
1137 style=wx.NO_BORDER) |
1138 button.SetToolTipString(help) |
1138 button.SetToolTip(help) |
1139 setattr(self, name, button) |
1139 setattr(self, name, button) |
1140 if idx > 0: |
1140 if idx > 0: |
1141 flag = wx.TOP |
1141 flag = wx.TOP |
1142 else: |
1142 else: |
1143 flag = 0 |
1143 flag = 0 |
1144 if callback is None: |
1144 if callback is None: |
1145 callback = getattr(self, "On" + name, None) |
1145 callback = getattr(self, "On" + name, None) |
1146 if callback is not None: |
1146 if callback is not None: |
1147 parent.Bind(wx.EVT_BUTTON, callback, button) |
1147 parent.Bind(wx.EVT_BUTTON, callback, button) |
1148 buttons_sizer.AddWindow(button, border=10, flag=flag) |
1148 buttons_sizer.Add(button, border=10, flag=flag) |
1149 |
1149 |
1150 modules_label = wx.StaticText(parent, |
1150 modules_label = wx.StaticText(parent, |
1151 label=_("Modules library:")) |
1151 label=_("Modules library:")) |
1152 self.AddSizer(modules_label, border=10, |
1152 self.Add(modules_label, border=10, |
1153 flag=wx.LEFT | wx.RIGHT) |
1153 flag=wx.LEFT | wx.RIGHT) |
1154 |
1154 |
1155 self.ModulesGrid = wx.gizmos.TreeListCtrl(parent, |
1155 self.ModulesGrid = wx.adv.TreeListCtrl(parent, |
1156 style=wx.TR_DEFAULT_STYLE | |
1156 style=wx.TR_DEFAULT_STYLE | |
1157 wx.TR_ROW_LINES | |
1157 wx.TR_ROW_LINES | |
1158 wx.TR_COLUMN_LINES | |
1158 wx.TR_COLUMN_LINES | |
1159 wx.TR_HIDE_ROOT | |
1159 wx.TR_HIDE_ROOT | |
1160 wx.TR_FULL_ROW_HIGHLIGHT) |
1160 wx.TR_FULL_ROW_HIGHLIGHT) |