etherlab/ConfigEditor.py
changeset 2105 a62c0de6986f
parent 2100 bb43a81356eb
child 2110 e8c43f542eb1
equal deleted inserted replaced
2104:69ffbd4bcfc3 2105:a62c0de6986f
    56         self.AddGrowableRow(1)
    56         self.AddGrowableRow(1)
    57         
    57         
    58         self.Controler = controler
    58         self.Controler = controler
    59         self.PositionColumn = position_column
    59         self.PositionColumn = position_column
    60         
    60         
    61         self.VariablesFilter = wx.ComboBox(parent)
    61         self.VariablesFilter = wx.ComboBox(parent, style=wx.TE_PROCESS_ENTER)
    62         self.VariablesFilter.Bind(wx.EVT_COMBOBOX, self.OnVariablesFilterChanged)
    62         self.VariablesFilter.Bind(wx.EVT_COMBOBOX, self.OnVariablesFilterChanged)
       
    63         self.VariablesFilter.Bind(wx.EVT_TEXT_ENTER, self.OnVariablesFilterChanged)
    63         self.AddWindow(self.VariablesFilter, flag=wx.GROW)
    64         self.AddWindow(self.VariablesFilter, flag=wx.GROW)
    64         
    65         
    65         self.VariablesGrid = wx.gizmos.TreeListCtrl(parent, 
    66         self.VariablesGrid = wx.gizmos.TreeListCtrl(parent, 
    66                 style=wx.TR_DEFAULT_STYLE |
    67                 style=wx.TR_DEFAULT_STYLE |
    67                       wx.TR_ROW_LINES |
    68                       wx.TR_ROW_LINES |
   152             try:
   153             try:
   153                 value = self.VariablesFilter.GetValue()
   154                 value = self.VariablesFilter.GetValue()
   154                 result = ETHERCAT_INDEX_MODEL.match(value)
   155                 result = ETHERCAT_INDEX_MODEL.match(value)
   155                 if result is not None:
   156                 if result is not None:
   156                     value = result.group(1)
   157                     value = result.group(1)
   157                 index = int(value)
   158                 index = int(value, 16)
   158                 self.CurrentFilter = (index, index)
   159                 self.CurrentFilter = (index, index)
   159                 self.RefreshView()
   160                 self.RefreshView()
   160             except:
   161             except:
   161                 pass
   162                 pass
   162         event.Skip()
   163         event.Skip()
   320             message = _("Invalid value \"%s\" for process variable")%data
   321             message = _("Invalid value \"%s\" for process variable")%data
   321             values = None
   322             values = None
   322         if not isinstance(values, TupleType):
   323         if not isinstance(values, TupleType):
   323             message = _("Invalid value \"%s\" for process variable")%data
   324             message = _("Invalid value \"%s\" for process variable")%data
   324             values = None
   325             values = None
   325         if values is not None and 2 <= col <= 3:
   326         if values is not None and col != wx.NOT_FOUND and row != wx.NOT_FOUND and 2 <= col <= 3:
   326             location = None
   327             location = None
   327             if values[1] == "location":
   328             if values[1] == "location":
   328                 result = LOCATION_MODEL.match(values[0])
   329                 result = LOCATION_MODEL.match(values[0])
   329                 if result is not None:
   330                 if result is not None:
   330                     location = map(int, result.group(1).split('.'))
   331                     location = map(int, result.group(1).split('.'))
   574         self.NodesVariables = MasterNodesVariablesSizer(self.EthercatMasterEditor, self.Controler)
   575         self.NodesVariables = MasterNodesVariablesSizer(self.EthercatMasterEditor, self.Controler)
   575         second_staticbox_sizer.AddSizer(self.NodesVariables, 1, border=5, flag=wx.GROW|wx.ALL)
   576         second_staticbox_sizer.AddSizer(self.NodesVariables, 1, border=5, flag=wx.GROW|wx.ALL)
   576         
   577         
   577         main_staticbox = wx.StaticBox(self.EthercatMasterEditor, label=_("Node filter:"))
   578         main_staticbox = wx.StaticBox(self.EthercatMasterEditor, label=_("Node filter:"))
   578         staticbox_sizer = wx.StaticBoxSizer(main_staticbox, wx.VERTICAL)
   579         staticbox_sizer = wx.StaticBoxSizer(main_staticbox, wx.VERTICAL)
   579         main_sizer.AddSizer(staticbox_sizer, border=10, flag=wx.GROW|wx.ALL)
   580         main_sizer.AddSizer(staticbox_sizer, 1, border=10, flag=wx.GROW|wx.ALL)
   580         main_staticbox_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=5, vgap=0)
   581         main_staticbox_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=6, vgap=0)
   581         main_staticbox_sizer.AddGrowableCol(0)
   582         main_staticbox_sizer.AddGrowableCol(0)
   582         main_staticbox_sizer.AddGrowableRow(1)
   583         main_staticbox_sizer.AddGrowableRow(2)
   583         main_staticbox_sizer.AddGrowableRow(3)
   584         main_staticbox_sizer.AddGrowableRow(4)
       
   585         main_staticbox_sizer.AddGrowableRow(5)
   584         staticbox_sizer.AddSizer(main_staticbox_sizer, 1, flag=wx.GROW)
   586         staticbox_sizer.AddSizer(main_staticbox_sizer, 1, flag=wx.GROW)
   585         main_staticbox_sizer.AddWindow(self.NodesFilter, border=5, flag=wx.GROW|wx.ALL)
   587         main_staticbox_sizer.AddWindow(self.NodesFilter, border=5, flag=wx.GROW|wx.ALL)
   586         main_staticbox_sizer.AddSizer(process_variables_header, border=5, 
   588         main_staticbox_sizer.AddSizer(process_variables_header, border=5, 
   587               flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.BOTTOM)
   589               flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.BOTTOM)
   588         main_staticbox_sizer.AddWindow(self.ProcessVariablesGrid, 1, 
   590         main_staticbox_sizer.AddWindow(self.ProcessVariablesGrid, 1, 
   906     
   908     
   907     def __init__(self, parent, module_library, buttons):
   909     def __init__(self, parent, module_library, buttons):
   908         wx.FlexGridSizer.__init__(self, cols=1, hgap=0, rows=4, vgap=5)
   910         wx.FlexGridSizer.__init__(self, cols=1, hgap=0, rows=4, vgap=5)
   909         
   911         
   910         self.ModuleLibrary = module_library
   912         self.ModuleLibrary = module_library
   911     
   913         self.ParentWindow = parent
       
   914         
   912         self.AddGrowableCol(0)
   915         self.AddGrowableCol(0)
   913         self.AddGrowableRow(1)
   916         self.AddGrowableRow(1)
   914         self.AddGrowableRow(3)
   917         self.AddGrowableRow(3)
   915         
   918         
   916         ESI_files_label = wx.StaticText(parent, 
   919         ESI_files_label = wx.StaticText(parent, 
  1018                 item, root_cookie = self.ModulesGrid.GetNextChild(root, root_cookie)
  1021                 item, root_cookie = self.ModulesGrid.GetNextChild(root, root_cookie)
  1019             for item in to_delete:
  1022             for item in to_delete:
  1020                 self.ModulesGrid.Delete(item)
  1023                 self.ModulesGrid.Delete(item)
  1021     
  1024     
  1022     def OnImportButton(self, event):
  1025     def OnImportButton(self, event):
  1023         dialog = wx.FileDialog(self,
  1026         dialog = wx.FileDialog(self.ParentWindow,
  1024              _("Choose an XML file"), 
  1027              _("Choose an XML file"), 
  1025              os.getcwd(), "",  
  1028              os.getcwd(), "",  
  1026              _("XML files (*.xml)|*.xml|All files|*.*"), wx.OPEN)
  1029              _("XML files (*.xml)|*.xml|All files|*.*"), wx.OPEN)
  1027         
  1030         
  1028         if dialog.ShowModal() == wx.ID_OK:
  1031         if dialog.ShowModal() == wx.ID_OK:
  1042     def OnDeleteButton(self, event):
  1045     def OnDeleteButton(self, event):
  1043         filepath = self.GetSelectedFilePath()
  1046         filepath = self.GetSelectedFilePath()
  1044         if os.path.isfile(filepath):
  1047         if os.path.isfile(filepath):
  1045             folder, filename = os.path.split(filepath)
  1048             folder, filename = os.path.split(filepath)
  1046             
  1049             
  1047             dialog = wx.MessageDialog(self, 
  1050             dialog = wx.MessageDialog(self.ParentWindow, 
  1048                   _("Do you really want to delete the file '%s'?") % filename, 
  1051                   _("Do you really want to delete the file '%s'?") % filename, 
  1049                   _("Delete File"), wx.YES_NO|wx.ICON_QUESTION)
  1052                   _("Delete File"), wx.YES_NO|wx.ICON_QUESTION)
  1050             remove = dialog.ShowModal() == wx.ID_YES
  1053             remove = dialog.ShowModal() == wx.ID_YES
  1051             dialog.Destroy()
  1054             dialog.Destroy()
  1052             
  1055             
  1059     def OnModulesGridLeftDClick(self, event):
  1062     def OnModulesGridLeftDClick(self, event):
  1060         item, flags, col = self.ModulesGrid.HitTest(event.GetPosition())
  1063         item, flags, col = self.ModulesGrid.HitTest(event.GetPosition())
  1061         if item.IsOk():
  1064         if item.IsOk():
  1062             entry_infos = self.ModulesGrid.GetItemPyData(item)
  1065             entry_infos = self.ModulesGrid.GetItemPyData(item)
  1063             if entry_infos is not None and col == 1:
  1066             if entry_infos is not None and col == 1:
  1064                 dialog = wx.TextEntryDialog(self, 
  1067                 dialog = wx.TextEntryDialog(self.ParentWindow, 
  1065                     _("Set PDO alignment (bits):"),
  1068                     _("Set PDO alignment (bits):"),
  1066                     _("%s PDO alignment") % self.ModulesGrid.GetItemText(item), 
  1069                     _("%s PDO alignment") % self.ModulesGrid.GetItemText(item), 
  1067                     str(entry_infos["alignment"]))
  1070                     str(entry_infos["alignment"]))
  1068                 
  1071                 
  1069                 if dialog.ShowModal() == wx.ID_OK:
  1072                 if dialog.ShowModal() == wx.ID_OK: