canfestival/NetworkEditor.py
changeset 1730 64d8f52bc8c8
parent 1511 91538d0c242c
child 1736 7e61baa047f0
equal deleted inserted replaced
1726:d51af006fa6b 1730:64d8f52bc8c8
    26 
    26 
    27 from subindextable import EditingPanel
    27 from subindextable import EditingPanel
    28 from networkeditortemplate import NetworkEditorTemplate
    28 from networkeditortemplate import NetworkEditorTemplate
    29 from editors.ConfTreeNodeEditor import ConfTreeNodeEditor
    29 from editors.ConfTreeNodeEditor import ConfTreeNodeEditor
    30 
    30 
    31 [ID_NETWORKEDITOR, 
    31 [ID_NETWORKEDITOR,
    32 ] = [wx.NewId() for _init_ctrls in range(1)]
    32 ] = [wx.NewId() for _init_ctrls in range(1)]
    33 
    33 
    34 [ID_NETWORKEDITORCONFNODEMENUADDSLAVE, ID_NETWORKEDITORCONFNODEMENUREMOVESLAVE, 
    34 [ID_NETWORKEDITORCONFNODEMENUADDSLAVE, ID_NETWORKEDITORCONFNODEMENUREMOVESLAVE,
    35  ID_NETWORKEDITORCONFNODEMENUMASTER, 
    35  ID_NETWORKEDITORCONFNODEMENUMASTER,
    36 ] = [wx.NewId() for _init_coll_ConfNodeMenu_Items in range(3)]
    36 ] = [wx.NewId() for _init_coll_ConfNodeMenu_Items in range(3)]
    37 
    37 
    38 [ID_NETWORKEDITORMASTERMENUNODEINFOS, ID_NETWORKEDITORMASTERMENUDS301PROFILE,
    38 [ID_NETWORKEDITORMASTERMENUNODEINFOS, ID_NETWORKEDITORMASTERMENUDS301PROFILE,
    39  ID_NETWORKEDITORMASTERMENUDS302PROFILE, ID_NETWORKEDITORMASTERMENUDSOTHERPROFILE,
    39  ID_NETWORKEDITORMASTERMENUDS302PROFILE, ID_NETWORKEDITORMASTERMENUDSOTHERPROFILE,
    40  ID_NETWORKEDITORMASTERMENUADD, 
    40  ID_NETWORKEDITORMASTERMENUADD,
    41 ] = [wx.NewId() for _init_coll_MasterMenu_Items in range(5)]
    41 ] = [wx.NewId() for _init_coll_MasterMenu_Items in range(5)]
    42 
    42 
    43 [ID_NETWORKEDITORADDMENUSDOSERVER, ID_NETWORKEDITORADDMENUSDOCLIENT,
    43 [ID_NETWORKEDITORADDMENUSDOSERVER, ID_NETWORKEDITORADDMENUSDOCLIENT,
    44  ID_NETWORKEDITORADDMENUPDOTRANSMIT, ID_NETWORKEDITORADDMENUPDORECEIVE,
    44  ID_NETWORKEDITORADDMENUPDOTRANSMIT, ID_NETWORKEDITORADDMENUPDORECEIVE,
    45  ID_NETWORKEDITORADDMENUMAPVARIABLE, ID_NETWORKEDITORADDMENUUSERTYPE,
    45  ID_NETWORKEDITORADDMENUMAPVARIABLE, ID_NETWORKEDITORADDMENUUSERTYPE,
    46 ] = [wx.NewId() for _init_coll_AddMenu_Items in range(6)]
    46 ] = [wx.NewId() for _init_coll_AddMenu_Items in range(6)]
    47 
    47 
    48 class NetworkEditor(ConfTreeNodeEditor, NetworkEditorTemplate):
    48 class NetworkEditor(ConfTreeNodeEditor, NetworkEditorTemplate):
    49     
    49 
    50     ID = ID_NETWORKEDITOR
    50     ID = ID_NETWORKEDITOR
    51     CONFNODEEDITOR_TABS = [
    51     CONFNODEEDITOR_TABS = [
    52         (_("CANOpen network"), "_create_NetworkEditor")]
    52         (_("CANOpen network"), "_create_NetworkEditor")]
    53     
    53 
    54     def _create_NetworkEditor(self, prnt):
    54     def _create_NetworkEditor(self, prnt):
    55         self.NetworkEditor = wx.Panel(id=-1, parent=prnt, pos=wx.Point(0, 0), 
    55         self.NetworkEditor = wx.Panel(id=-1, parent=prnt, pos=wx.Point(0, 0),
    56                 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
    56                 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
    57         
    57 
    58         NetworkEditorTemplate._init_ctrls(self, self.NetworkEditor)
    58         NetworkEditorTemplate._init_ctrls(self, self.NetworkEditor)
    59         
    59 
    60         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=1, vgap=0)
    60         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=1, vgap=0)
    61         main_sizer.AddGrowableCol(0)
    61         main_sizer.AddGrowableCol(0)
    62         main_sizer.AddGrowableRow(0)
    62         main_sizer.AddGrowableRow(0)
    63         
    63 
    64         main_sizer.AddWindow(self.NetworkNodes, 0, border=5, flag=wx.GROW|wx.ALL)
    64         main_sizer.AddWindow(self.NetworkNodes, 0, border=5, flag=wx.GROW|wx.ALL)
    65     
    65 
    66         self.NetworkEditor.SetSizer(main_sizer)
    66         self.NetworkEditor.SetSizer(main_sizer)
    67     
    67 
    68         return self.NetworkEditor
    68         return self.NetworkEditor
    69     
    69 
    70     def __init__(self, parent, controler, window):
    70     def __init__(self, parent, controler, window):
    71         ConfTreeNodeEditor.__init__(self, parent, controler, window)
    71         ConfTreeNodeEditor.__init__(self, parent, controler, window)
    72         NetworkEditorTemplate.__init__(self, controler, window, False)
    72         NetworkEditorTemplate.__init__(self, controler, window, False)
    73     
    73 
    74         self.RefreshNetworkNodes()
    74         self.RefreshNetworkNodes()
    75         self.RefreshBufferState()
    75         self.RefreshBufferState()
    76     
    76 
    77     def __del__(self):
    77     def __del__(self):
    78         self.Controler.OnCloseEditor(self)
    78         self.Controler.OnCloseEditor(self)
    79     
    79 
    80     def GetConfNodeMenuItems(self):
    80     def GetConfNodeMenuItems(self):
    81         add_menu = [(wx.ITEM_NORMAL, (_('SDO Server'), ID_NETWORKEDITORADDMENUSDOSERVER, '', self.OnAddSDOServerMenu)),
    81         add_menu = [(wx.ITEM_NORMAL, (_('SDO Server'), ID_NETWORKEDITORADDMENUSDOSERVER, '', self.OnAddSDOServerMenu)),
    82                     (wx.ITEM_NORMAL, (_('SDO Client'), ID_NETWORKEDITORADDMENUSDOCLIENT, '', self.OnAddSDOClientMenu)),
    82                     (wx.ITEM_NORMAL, (_('SDO Client'), ID_NETWORKEDITORADDMENUSDOCLIENT, '', self.OnAddSDOClientMenu)),
    83                     (wx.ITEM_NORMAL, (_('PDO Transmit'), ID_NETWORKEDITORADDMENUPDOTRANSMIT, '', self.OnAddPDOTransmitMenu)),
    83                     (wx.ITEM_NORMAL, (_('PDO Transmit'), ID_NETWORKEDITORADDMENUPDOTRANSMIT, '', self.OnAddPDOTransmitMenu)),
    84                     (wx.ITEM_NORMAL, (_('PDO Receive'), ID_NETWORKEDITORADDMENUPDORECEIVE, '', self.OnAddPDOReceiveMenu)),
    84                     (wx.ITEM_NORMAL, (_('PDO Receive'), ID_NETWORKEDITORADDMENUPDORECEIVE, '', self.OnAddPDOReceiveMenu)),
    85                     (wx.ITEM_NORMAL, (_('Map Variable'), ID_NETWORKEDITORADDMENUMAPVARIABLE, '', self.OnAddMapVariableMenu)),
    85                     (wx.ITEM_NORMAL, (_('Map Variable'), ID_NETWORKEDITORADDMENUMAPVARIABLE, '', self.OnAddMapVariableMenu)),
    86                     (wx.ITEM_NORMAL, (_('User Type'), ID_NETWORKEDITORADDMENUUSERTYPE, '', self.OnAddUserTypeMenu))]
    86                     (wx.ITEM_NORMAL, (_('User Type'), ID_NETWORKEDITORADDMENUUSERTYPE, '', self.OnAddUserTypeMenu))]
    87         
    87 
    88         profile = self.Manager.GetCurrentProfileName()
    88         profile = self.Manager.GetCurrentProfileName()
    89         if profile not in ("None", "DS-301"):
    89         if profile not in ("None", "DS-301"):
    90             other_profile_text = _("%s Profile") % profile
    90             other_profile_text = _("%s Profile") % profile
    91             add_menu.append((wx.ITEM_SEPARATOR, None))
    91             add_menu.append((wx.ITEM_SEPARATOR, None))
    92             for text, indexes in self.Manager.GetCurrentSpecificMenu():
    92             for text, indexes in self.Manager.GetCurrentSpecificMenu():
    93                 add_menu.append((wx.ITEM_NORMAL, (text, wx.NewId(), '', self.GetProfileCallBack(text))))
    93                 add_menu.append((wx.ITEM_NORMAL, (text, wx.NewId(), '', self.GetProfileCallBack(text))))
    94         else:
    94         else:
    95             other_profile_text = _('Other Profile')
    95             other_profile_text = _('Other Profile')
    96         
    96 
    97         master_menu = [(wx.ITEM_NORMAL, (_('DS-301 Profile'), ID_NETWORKEDITORMASTERMENUDS301PROFILE, '', self.OnCommunicationMenu)),
    97         master_menu = [(wx.ITEM_NORMAL, (_('DS-301 Profile'), ID_NETWORKEDITORMASTERMENUDS301PROFILE, '', self.OnCommunicationMenu)),
    98                        (wx.ITEM_NORMAL, (_('DS-302 Profile'), ID_NETWORKEDITORMASTERMENUDS302PROFILE, '', self.OnOtherCommunicationMenu)),
    98                        (wx.ITEM_NORMAL, (_('DS-302 Profile'), ID_NETWORKEDITORMASTERMENUDS302PROFILE, '', self.OnOtherCommunicationMenu)),
    99                        (wx.ITEM_NORMAL, (other_profile_text, ID_NETWORKEDITORMASTERMENUDSOTHERPROFILE, '', self.OnEditProfileMenu)),
    99                        (wx.ITEM_NORMAL, (other_profile_text, ID_NETWORKEDITORMASTERMENUDSOTHERPROFILE, '', self.OnEditProfileMenu)),
   100                        (wx.ITEM_SEPARATOR, None),
   100                        (wx.ITEM_SEPARATOR, None),
   101                        (add_menu, (_('Add'), ID_NETWORKEDITORMASTERMENUADD))]
   101                        (add_menu, (_('Add'), ID_NETWORKEDITORMASTERMENUADD))]
   102         
   102 
   103         return [(wx.ITEM_NORMAL, (_('Add slave'), ID_NETWORKEDITORCONFNODEMENUADDSLAVE, '', self.OnAddSlaveMenu)),
   103         return [(wx.ITEM_NORMAL, (_('Add slave'), ID_NETWORKEDITORCONFNODEMENUADDSLAVE, '', self.OnAddSlaveMenu)),
   104                 (wx.ITEM_NORMAL, (_('Remove slave'), ID_NETWORKEDITORCONFNODEMENUREMOVESLAVE, '', self.OnRemoveSlaveMenu)),
   104                 (wx.ITEM_NORMAL, (_('Remove slave'), ID_NETWORKEDITORCONFNODEMENUREMOVESLAVE, '', self.OnRemoveSlaveMenu)),
   105                 (wx.ITEM_SEPARATOR, None),
   105                 (wx.ITEM_SEPARATOR, None),
   106                 (master_menu, (_('Master'), ID_NETWORKEDITORCONFNODEMENUMASTER))]
   106                 (master_menu, (_('Master'), ID_NETWORKEDITORCONFNODEMENUMASTER))]
   107     
   107 
   108     def RefreshMainMenu(self):
   108     def RefreshMainMenu(self):
   109         pass
   109         pass
   110     
   110 
   111     def RefreshConfNodeMenu(self, confnode_menu):
   111     def RefreshConfNodeMenu(self, confnode_menu):
   112         confnode_menu.Enable(ID_NETWORKEDITORCONFNODEMENUMASTER, self.NetworkNodes.GetSelection() == 0)
   112         confnode_menu.Enable(ID_NETWORKEDITORCONFNODEMENUMASTER, self.NetworkNodes.GetSelection() == 0)
   113     
   113 
   114     def RefreshView(self):
   114     def RefreshView(self):
   115         ConfTreeNodeEditor.RefreshView(self)
   115         ConfTreeNodeEditor.RefreshView(self)
   116         self.RefreshCurrentIndexList()
   116         self.RefreshCurrentIndexList()
   117     
   117 
   118     def RefreshBufferState(self):
   118     def RefreshBufferState(self):
   119         NetworkEditorTemplate.RefreshBufferState(self)
   119         NetworkEditorTemplate.RefreshBufferState(self)
   120         self.ParentWindow.RefreshTitle()
   120         self.ParentWindow.RefreshTitle()
   121         self.ParentWindow.RefreshFileMenu()
   121         self.ParentWindow.RefreshFileMenu()
   122         self.ParentWindow.RefreshEditMenu()
   122         self.ParentWindow.RefreshEditMenu()
   123         self.ParentWindow.RefreshPageTitles()
   123         self.ParentWindow.RefreshPageTitles()
   124     
   124 
   125     def OnNodeSelectedChanged(self, event):
   125     def OnNodeSelectedChanged(self, event):
   126         NetworkEditorTemplate.OnNodeSelectedChanged(self, event)
   126         NetworkEditorTemplate.OnNodeSelectedChanged(self, event)
   127         wx.CallAfter(self.ParentWindow.RefreshEditMenu)
   127         wx.CallAfter(self.ParentWindow.RefreshEditMenu)