etherlab/ConfigEditor.py
changeset 2381 1c40e3976cc2
parent 2379 015b724c30a5
child 2392 aad985da14f7
--- a/etherlab/ConfigEditor.py	Sat Sep 29 15:03:17 2018 +0300
+++ b/etherlab/ConfigEditor.py	Sat Sep 29 15:16:21 2018 +0300
@@ -90,13 +90,13 @@
         self.AddWindow(self.VariablesFilter, flag=wx.GROW)
 
         self.VariablesGrid = wx.gizmos.TreeListCtrl(parent,
-                style=wx.TR_DEFAULT_STYLE |
-                      wx.TR_ROW_LINES |
-                      wx.TR_COLUMN_LINES |
-                      wx.TR_HIDE_ROOT |
-                      wx.TR_FULL_ROW_HIGHLIGHT)
+                                                    style=wx.TR_DEFAULT_STYLE |
+                                                    wx.TR_ROW_LINES |
+                                                    wx.TR_COLUMN_LINES |
+                                                    wx.TR_HIDE_ROOT |
+                                                    wx.TR_FULL_ROW_HIGHLIGHT)
         self.VariablesGrid.GetMainWindow().Bind(wx.EVT_LEFT_DOWN,
-            self.OnVariablesGridLeftClick)
+                                                self.OnVariablesGridLeftClick)
         self.AddWindow(self.VariablesGrid, flag=wx.GROW)
 
         self.Filters = []
@@ -276,12 +276,12 @@
         main_sizer.AddGrowableRow(1)
 
         variables_label = wx.StaticText(self.EthercatNodeEditor,
-              label=_('Variable entries:'))
+                                        label=_('Variable entries:'))
         main_sizer.AddWindow(variables_label, border=10, flag=wx.TOP | wx.LEFT | wx.RIGHT)
 
         self.NodeVariables = NodeVariablesSizer(self.EthercatNodeEditor, self.Controler)
         main_sizer.AddSizer(self.NodeVariables, border=10,
-            flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT)
+                            flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT)
 
         self.EthercatNodeEditor.SetSizer(main_sizer)
 
@@ -304,7 +304,7 @@
     # -------------------For EtherCAT Management ----------------------------------------------
     def _create_EtherCATManagementEditor(self, prnt):
         self.EtherCATManagementEditor = wx.ScrolledWindow(prnt,
-            style=wx.TAB_TRAVERSAL | wx.HSCROLL | wx.VSCROLL)
+                                                          style=wx.TAB_TRAVERSAL | wx.HSCROLL | wx.VSCROLL)
         self.EtherCATManagementEditor.Bind(wx.EVT_SIZE, self.OnResize)
 
         self.EtherCATManagermentEditor_Main_Sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
@@ -327,7 +327,9 @@
         posy = max(0, min(ystart, (maxy - window_size[1]) / SCROLLBAR_UNIT))
         self.EtherCATManagementEditor.Scroll(posx, posy)
         self.EtherCATManagementEditor.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT,
-                maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy)
+                                                    maxx / SCROLLBAR_UNIT,
+                                                    maxy / SCROLLBAR_UNIT,
+                                                    posx, posy)
         event.Skip()
     # -------------------------------------------------------------------------------------------------------
 
@@ -634,18 +636,20 @@
         posy = max(0, min(ystart, (maxy - window_size[1]) / SCROLLBAR_UNIT))
         self.MasterStateEditor.Scroll(posx, posy)
         self.MasterStateEditor.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT,
-                maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy)
+                                             maxx / SCROLLBAR_UNIT,
+                                             maxy / SCROLLBAR_UNIT,
+                                             posx, posy)
         event.Skip()
 
     def _create_EthercatMasterEditor(self, prnt):
         self.EthercatMasterEditor = wx.ScrolledWindow(prnt,
-            style=wx.TAB_TRAVERSAL | wx.HSCROLL | wx.VSCROLL)
+                                                      style=wx.TAB_TRAVERSAL | wx.HSCROLL | wx.VSCROLL)
         self.EthercatMasterEditor.Bind(wx.EVT_SIZE, self.OnResize)
 
         self.EthercatMasterEditorSizer = wx.BoxSizer(wx.VERTICAL)
 
         self.NodesFilter = wx.ComboBox(self.EthercatMasterEditor,
-            style=wx.TE_PROCESS_ENTER)
+                                       style=wx.TE_PROCESS_ENTER)
         self.Bind(wx.EVT_COMBOBOX, self.OnNodesFilterChanged, self.NodesFilter)
         self.Bind(wx.EVT_TEXT_ENTER, self.OnNodesFilterChanged, self.NodesFilter)
         self.NodesFilter.Bind(wx.EVT_CHAR, self.OnNodesFilterKeyDown)
@@ -653,9 +657,9 @@
         process_variables_header = wx.BoxSizer(wx.HORIZONTAL)
 
         process_variables_label = wx.StaticText(self.EthercatMasterEditor,
-              label=_("Process variables mapped between nodes:"))
+                                                label=_("Process variables mapped between nodes:"))
         process_variables_header.AddWindow(process_variables_label, 1,
-              flag=wx.ALIGN_CENTER_VERTICAL)
+                                           flag=wx.ALIGN_CENTER_VERTICAL)
 
         for name, bitmap, help in [
                 ("AddVariableButton", "add_element", _("Add process variable")),
@@ -663,7 +667,7 @@
                 ("UpVariableButton", "up", _("Move process variable up")),
                 ("DownVariableButton", "down", _("Move process variable down"))]:
             button = wx.lib.buttons.GenBitmapButton(self.EthercatMasterEditor, bitmap=GetBitmap(bitmap),
-                  size=wx.Size(28, 28), style=wx.NO_BORDER)
+                                                    size=wx.Size(28, 28), style=wx.NO_BORDER)
             button.SetToolTipString(help)
             setattr(self, name, button)
             process_variables_header.AddWindow(button, border=5, flag=wx.LEFT)
@@ -672,23 +676,23 @@
         self.ProcessVariablesGrid.SetMinSize(wx.Size(0, 150))
         self.ProcessVariablesGrid.SetDropTarget(ProcessVariableDropTarget(self))
         self.ProcessVariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
-              self.OnProcessVariablesGridCellChange)
+                                       self.OnProcessVariablesGridCellChange)
         self.ProcessVariablesGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK,
-              self.OnProcessVariablesGridCellLeftClick)
+                                       self.OnProcessVariablesGridCellLeftClick)
         self.ProcessVariablesGrid.Bind(wx.EVT_KEY_DOWN, self.OnProcessVariablesGridKeyDown)
 
         startup_commands_header = wx.BoxSizer(wx.HORIZONTAL)
 
         startup_commands_label = wx.StaticText(self.EthercatMasterEditor,
-              label=_("Startup service variables assignments:"))
+                                               label=_("Startup service variables assignments:"))
         startup_commands_header.AddWindow(startup_commands_label, 1,
-              flag=wx.ALIGN_CENTER_VERTICAL)
+                                          flag=wx.ALIGN_CENTER_VERTICAL)
 
         for name, bitmap, help in [
                 ("AddCommandButton", "add_element", _("Add startup service variable")),
                 ("DeleteCommandButton", "remove_element", _("Remove startup service variable"))]:
             button = wx.lib.buttons.GenBitmapButton(self.EthercatMasterEditor, bitmap=GetBitmap(bitmap),
-                  size=wx.Size(28, 28), style=wx.NO_BORDER)
+                                                    size=wx.Size(28, 28), style=wx.NO_BORDER)
             button.SetToolTipString(help)
             setattr(self, name, button)
             startup_commands_header.AddWindow(button, border=5, flag=wx.LEFT)
@@ -697,9 +701,9 @@
         self.StartupCommandsGrid.SetDropTarget(StartupCommandDropTarget(self))
         self.StartupCommandsGrid.SetMinSize(wx.Size(0, 150))
         self.StartupCommandsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
-              self.OnStartupCommandsGridCellChange)
+                                      self.OnStartupCommandsGridCellChange)
         self.StartupCommandsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN,
-              self.OnStartupCommandsGridEditorShow)
+                                      self.OnStartupCommandsGridEditorShow)
 
         self.NodesVariables = MasterNodesVariablesSizer(self.EthercatMasterEditor, self.Controler)
 
@@ -715,20 +719,20 @@
         staticbox_sizer.AddSizer(main_staticbox_sizer, 1, flag=wx.GROW)
         main_staticbox_sizer.AddWindow(self.NodesFilter, border=5, flag=wx.GROW | wx.ALL)
         main_staticbox_sizer.AddSizer(process_variables_header, border=5,
-              flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
+                                      flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
         main_staticbox_sizer.AddWindow(self.ProcessVariablesGrid, 1,
-              border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
+                                       border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
         main_staticbox_sizer.AddSizer(startup_commands_header,
-              border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
+                                      border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
         main_staticbox_sizer.AddWindow(self.StartupCommandsGrid, 1,
-              border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
+                                       border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
 
         second_staticbox = wx.StaticBox(self.EthercatMasterEditor, label=_("Nodes variables filter:"))
         second_staticbox_sizer = wx.StaticBoxSizer(second_staticbox, wx.VERTICAL)
         second_staticbox_sizer.AddSizer(self.NodesVariables, 1, border=5, flag=wx.GROW | wx.ALL)
 
         main_staticbox_sizer.AddSizer(second_staticbox_sizer, 1,
-            border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
+                                      border=5, flag=wx.GROW | wx.LEFT | wx.RIGHT | wx.BOTTOM)
 
         self.EthercatMasterEditor.SetSizer(self.EthercatMasterEditorSizer)
 
@@ -1069,7 +1073,9 @@
         posy = max(0, min(ystart, (maxy - window_size[1]) / SCROLLBAR_UNIT))
         self.EthercatMasterEditor.Scroll(posx, posy)
         self.EthercatMasterEditor.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT,
-                maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy)
+                                                maxx / SCROLLBAR_UNIT,
+                                                maxy / SCROLLBAR_UNIT,
+                                                posx, posy)
         event.Skip()
 
     # def OnButtonClick(self, event):
@@ -1113,15 +1119,15 @@
         self.AddGrowableRow(3)
 
         ESI_files_label = wx.StaticText(parent,
-            label=_("ESI Files:"))
+                                        label=_("ESI Files:"))
         self.AddWindow(ESI_files_label, border=10,
-            flag=wx.TOP | wx.LEFT | wx.RIGHT)
+                       flag=wx.TOP | wx.LEFT | wx.RIGHT)
 
         folder_tree_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=1, vgap=0)
         folder_tree_sizer.AddGrowableCol(0)
         folder_tree_sizer.AddGrowableRow(0)
         self.AddSizer(folder_tree_sizer, border=10,
-            flag=wx.GROW | wx.LEFT | wx.RIGHT)
+                      flag=wx.GROW | wx.LEFT | wx.RIGHT)
 
         self.ESIFiles = FolderTree(parent, self.GetPath(), editable=False)
         self.ESIFiles.SetFilter(".xml")
@@ -1129,12 +1135,13 @@
 
         buttons_sizer = wx.BoxSizer(wx.VERTICAL)
         folder_tree_sizer.AddSizer(buttons_sizer,
-            flag=wx.ALIGN_CENTER_VERTICAL)
+                                   flag=wx.ALIGN_CENTER_VERTICAL)
 
         for idx, (name, bitmap, help, callback) in enumerate(buttons):
             button = wx.lib.buttons.GenBitmapButton(parent,
-                  bitmap=GetBitmap(bitmap),
-                  size=wx.Size(28, 28), style=wx.NO_BORDER)
+                                                    bitmap=GetBitmap(bitmap),
+                                                    size=wx.Size(28, 28),
+                                                    style=wx.NO_BORDER)
             button.SetToolTipString(help)
             setattr(self, name, button)
             if idx > 0:
@@ -1148,26 +1155,26 @@
             buttons_sizer.AddWindow(button, border=10, flag=flag)
 
         modules_label = wx.StaticText(parent,
-            label=_("Modules library:"))
+                                      label=_("Modules library:"))
         self.AddSizer(modules_label, border=10,
-            flag=wx.LEFT | wx.RIGHT)
+                      flag=wx.LEFT | wx.RIGHT)
 
         self.ModulesGrid = wx.gizmos.TreeListCtrl(parent,
-              style=wx.TR_DEFAULT_STYLE |
-                    wx.TR_ROW_LINES |
-                    wx.TR_COLUMN_LINES |
-                    wx.TR_HIDE_ROOT |
-                    wx.TR_FULL_ROW_HIGHLIGHT)
+                                                  style=wx.TR_DEFAULT_STYLE |
+                                                  wx.TR_ROW_LINES |
+                                                  wx.TR_COLUMN_LINES |
+                                                  wx.TR_HIDE_ROOT |
+                                                  wx.TR_FULL_ROW_HIGHLIGHT)
         self.ModulesGrid.GetMainWindow().Bind(wx.EVT_LEFT_DOWN,
-            self.OnModulesGridLeftDown)
+                                              self.OnModulesGridLeftDown)
         self.ModulesGrid.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT,
-            self.OnModulesGridBeginLabelEdit)
+                              self.OnModulesGridBeginLabelEdit)
         self.ModulesGrid.Bind(wx.EVT_TREE_END_LABEL_EDIT,
-            self.OnModulesGridEndLabelEdit)
+                              self.OnModulesGridEndLabelEdit)
         self.ModulesGrid.GetHeaderWindow().Bind(wx.EVT_MOTION,
-            self.OnModulesGridHeaderMotion)
+                                                self.OnModulesGridHeaderMotion)
         self.AddWindow(self.ModulesGrid, border=10,
-            flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT)
+                       flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT)
 
         for colname, colsize, colalign in zip(
                 [_("Name")] + [param_infos["column_label"]
@@ -1202,8 +1209,8 @@
         if not root.IsOk():
             root = self.ModulesGrid.AddRoot("Modules")
         self.GenerateModulesGridBranch(root,
-            self.ModuleLibrary.GetModulesLibrary(),
-            GetVariablesTableColnames())
+                                       self.ModuleLibrary.GetModulesLibrary(),
+                                       GetVariablesTableColnames())
         self.ModulesGrid.Expand(root)
 
     def GenerateModulesGridBranch(self, root, modules, colnames):
@@ -1237,9 +1244,10 @@
 
     def OnImportButton(self, event):
         dialog = wx.FileDialog(self.ParentWindow,
-             _("Choose an XML file"),
-             os.getcwd(), "",
-             _("XML files (*.xml)|*.xml|All files|*.*"), wx.OPEN)
+                               _("Choose an XML file"),
+                               os.getcwd(), "",
+                               _("XML files (*.xml)|*.xml|All files|*.*"),
+                               wx.OPEN)
 
         if dialog.ShowModal() == wx.ID_OK:
             filepath = dialog.GetPath()
@@ -1247,8 +1255,9 @@
                 wx.CallAfter(self.RefreshView)
             else:
                 message = wx.MessageDialog(self,
-                    _("No such XML file: %s\n") % filepath,
-                    _("Error"), wx.OK | wx.ICON_ERROR)
+                                           _("No such XML file: %s\n") % filepath,
+                                           _("Error"),
+                                           wx.OK | wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
         dialog.Destroy()
@@ -1261,8 +1270,9 @@
             folder, filename = os.path.split(filepath)
 
             dialog = wx.MessageDialog(self.ParentWindow,
-                  _("Do you really want to delete the file '%s'?") % filename,
-                  _("Delete File"), wx.YES_NO | wx.ICON_QUESTION)
+                                      _("Do you really want to delete the file '%s'?") % filename,
+                                      _("Delete File"),
+                                      wx.YES_NO | wx.ICON_QUESTION)
             remove = dialog.ShowModal() == wx.ID_YES
             dialog.Destroy()
 
@@ -1313,8 +1323,9 @@
                     event.Skip()
                 except ValueError:
                     message = wx.MessageDialog(self,
-                        _("Module %s must be an integer!") % stripped_column_label,
-                        _("Error"), wx.OK | wx.ICON_ERROR)
+                                               _("Module %s must be an integer!") % stripped_column_label,
+                                               _("Error"),
+                                               wx.OK | wx.ICON_ERROR)
                     message.ShowModal()
                     message.Destroy()
                     event.Veto()
@@ -1340,25 +1351,29 @@
 
     def __init__(self, parent, database):
         wx.Dialog.__init__(self, parent,
-              size=wx.Size(700, 500), title=_('ESI Files Database management'),
-              style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
+                           size=wx.Size(700, 500),
+                           title=_('ESI Files Database management'),
+                           style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
 
         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
         main_sizer.AddGrowableCol(0)
         main_sizer.AddGrowableRow(0)
 
-        self.DatabaseSizer = LibraryEditorSizer(self, database,
-            [("ImportButton", "ImportESI", _("Import file to ESI files database"), None),
-             ("DeleteButton", "remove_element", _("Remove file from database"), None)])
+        self.DatabaseSizer = LibraryEditorSizer(
+            self, database,
+            [
+                ("ImportButton", "ImportESI", _("Import file to ESI files database"), None),
+                ("DeleteButton", "remove_element", _("Remove file from database"), None)
+            ])
         self.DatabaseSizer.SetControlMinSize(wx.Size(0, 0))
         main_sizer.AddSizer(self.DatabaseSizer, border=10,
-            flag=wx.GROW | wx.TOP | wx.LEFT | wx.RIGHT)
+                            flag=wx.GROW | wx.TOP | wx.LEFT | wx.RIGHT)
 
         button_sizer = self.CreateButtonSizer(wx.OK | wx.CANCEL | wx.CENTRE)
         button_sizer.GetAffirmativeButton().SetLabel(_("Add file to project"))
         button_sizer.GetCancelButton().SetLabel(_("Close"))
         main_sizer.AddSizer(button_sizer, border=10,
-              flag=wx.ALIGN_RIGHT | wx.BOTTOM | wx.LEFT | wx.RIGHT)
+                            flag=wx.ALIGN_RIGHT | wx.BOTTOM | wx.LEFT | wx.RIGHT)
 
         self.SetSizer(main_sizer)
 
@@ -1375,14 +1390,17 @@
 
     def _create_ModuleLibraryEditor(self, prnt):
         self.ModuleLibraryEditor = wx.ScrolledWindow(prnt,
-            style=wx.TAB_TRAVERSAL | wx.HSCROLL | wx.VSCROLL)
+                                                     style=wx.TAB_TRAVERSAL | wx.HSCROLL | wx.VSCROLL)
         self.ModuleLibraryEditor.Bind(wx.EVT_SIZE, self.OnResize)
 
-        self.ModuleLibrarySizer = LibraryEditorSizer(self.ModuleLibraryEditor,
+        self.ModuleLibrarySizer = LibraryEditorSizer(
+            self.ModuleLibraryEditor,
             self.Controler.GetModulesLibraryInstance(),
-            [("ImportButton", "ImportESI", _("Import ESI file"), None),
-             ("AddButton", "ImportDatabase", _("Add file from ESI files database"), self.OnAddButton),
-             ("DeleteButton", "remove_element", _("Remove file from library"), None)])
+            [
+                ("ImportButton", "ImportESI", _("Import ESI file"), None),
+                ("AddButton", "ImportDatabase", _("Add file from ESI files database"), self.OnAddButton),
+                ("DeleteButton", "remove_element", _("Remove file from library"), None)
+            ])
         self.ModuleLibrarySizer.SetControlMinSize(wx.Size(0, 200))
         self.ModuleLibraryEditor.SetSizer(self.ModuleLibrarySizer)
 
@@ -1399,7 +1417,7 @@
 
     def OnAddButton(self, event):
         dialog = DatabaseManagementDialog(self,
-            self.Controler.GetModulesDatabaseInstance())
+                                          self.Controler.GetModulesDatabaseInstance())
 
         if dialog.ShowModal() == wx.ID_OK:
             module_library = self.Controler.GetModulesLibraryInstance()
@@ -1420,5 +1438,7 @@
         posy = max(0, min(ystart, (maxy - window_size[1]) / SCROLLBAR_UNIT))
         self.ModuleLibraryEditor.Scroll(posx, posy)
         self.ModuleLibraryEditor.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT,
-                maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy)
+                                               maxx / SCROLLBAR_UNIT,
+                                               maxy / SCROLLBAR_UNIT,
+                                               posx, posy)
         event.Skip()