smarteh-dev@680: import os, sys smarteh-dev@680: base_folder = os.path.split(sys.path[0])[0] smarteh-dev@680: CanFestivalPath = os.path.join(base_folder, "CanFestival-3") smarteh-dev@680: smarteh-dev@680: import wx smarteh-dev@680: smarteh-dev@680: from subindextable import EditingPanel smarteh-dev@680: from networkedit import NetworkEditorTemplate smarteh-dev@680: from controls import EditorPanel smarteh-dev@680: smarteh-dev@680: [ID_NETWORKEDITOR, smarteh-dev@680: ] = [wx.NewId() for _init_ctrls in range(1)] smarteh-dev@680: Edouard@717: [ID_NETWORKEDITORCONFNODEMENUADDSLAVE, ID_NETWORKEDITORCONFNODEMENUREMOVESLAVE, Edouard@717: ID_NETWORKEDITORCONFNODEMENUMASTER, Edouard@717: ] = [wx.NewId() for _init_coll_ConfNodeMenu_Items in range(3)] smarteh-dev@680: smarteh-dev@680: [ID_NETWORKEDITORMASTERMENUNODEINFOS, ID_NETWORKEDITORMASTERMENUDS301PROFILE, smarteh-dev@680: ID_NETWORKEDITORMASTERMENUDS302PROFILE, ID_NETWORKEDITORMASTERMENUDSOTHERPROFILE, smarteh-dev@680: ID_NETWORKEDITORMASTERMENUADD, smarteh-dev@680: ] = [wx.NewId() for _init_coll_MasterMenu_Items in range(5)] smarteh-dev@680: smarteh-dev@680: [ID_NETWORKEDITORADDMENUSDOSERVER, ID_NETWORKEDITORADDMENUSDOCLIENT, smarteh-dev@680: ID_NETWORKEDITORADDMENUPDOTRANSMIT, ID_NETWORKEDITORADDMENUPDORECEIVE, smarteh-dev@680: ID_NETWORKEDITORADDMENUMAPVARIABLE, ID_NETWORKEDITORADDMENUUSERTYPE, smarteh-dev@680: ] = [wx.NewId() for _init_coll_AddMenu_Items in range(6)] smarteh-dev@680: smarteh-dev@680: class NetworkEditor(EditorPanel, NetworkEditorTemplate): smarteh-dev@680: smarteh-dev@680: ID = ID_NETWORKEDITOR smarteh-dev@680: smarteh-dev@680: def _init_coll_MainSizer_Items(self, parent): smarteh-dev@680: parent.AddWindow(self.NetworkNodes, 0, border=5, flag=wx.GROW|wx.ALL) smarteh-dev@680: smarteh-dev@680: def _init_coll_MainSizer_Growables(self, parent): smarteh-dev@680: parent.AddGrowableCol(0) smarteh-dev@680: parent.AddGrowableRow(0) smarteh-dev@680: smarteh-dev@680: def _init_sizers(self): smarteh-dev@680: self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=1, vgap=0) smarteh-dev@680: smarteh-dev@680: self._init_coll_MainSizer_Items(self.MainSizer) smarteh-dev@680: self._init_coll_MainSizer_Growables(self.MainSizer) smarteh-dev@680: smarteh-dev@680: self.Editor.SetSizer(self.MainSizer) smarteh-dev@680: smarteh-dev@680: def _init_Editor(self, prnt): smarteh-dev@680: self.Editor = wx.Panel(id=-1, parent=prnt, pos=wx.Point(0, 0), smarteh-dev@680: size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) smarteh-dev@680: smarteh-dev@680: NetworkEditorTemplate._init_ctrls(self, self.Editor) smarteh-dev@680: smarteh-dev@680: self._init_sizers() smarteh-dev@680: smarteh-dev@680: def __init__(self, parent, controler, window): smarteh-dev@680: EditorPanel.__init__(self, parent, "", window, controler) smarteh-dev@680: NetworkEditorTemplate.__init__(self, controler, window, False) smarteh-dev@680: smarteh-dev@680: img = wx.Bitmap(os.path.join(CanFestivalPath, "objdictgen", "networkedit.png"), wx.BITMAP_TYPE_PNG).ConvertToImage() smarteh-dev@680: self.SetIcon(wx.BitmapFromImage(img.Rescale(16, 16))) smarteh-dev@680: smarteh-dev@680: self.RefreshNetworkNodes() smarteh-dev@680: self.RefreshBufferState() smarteh-dev@680: smarteh-dev@680: def __del__(self): smarteh-dev@680: self.Controler.OnCloseEditor(self) smarteh-dev@680: Edouard@717: def GetConfNodeMenuItems(self): smarteh-dev@680: add_menu = [(wx.ITEM_NORMAL, (_('SDO Server'), ID_NETWORKEDITORADDMENUSDOSERVER, '', self.OnAddSDOServerMenu)), smarteh-dev@680: (wx.ITEM_NORMAL, (_('SDO Client'), ID_NETWORKEDITORADDMENUSDOCLIENT, '', self.OnAddSDOClientMenu)), smarteh-dev@680: (wx.ITEM_NORMAL, (_('PDO Transmit'), ID_NETWORKEDITORADDMENUPDOTRANSMIT, '', self.OnAddPDOTransmitMenu)), smarteh-dev@680: (wx.ITEM_NORMAL, (_('PDO Receive'), ID_NETWORKEDITORADDMENUPDORECEIVE, '', self.OnAddPDOReceiveMenu)), smarteh-dev@680: (wx.ITEM_NORMAL, (_('Map Variable'), ID_NETWORKEDITORADDMENUMAPVARIABLE, '', self.OnAddMapVariableMenu)), smarteh-dev@680: (wx.ITEM_NORMAL, (_('User Type'), ID_NETWORKEDITORADDMENUUSERTYPE, '', self.OnAddUserTypeMenu))] smarteh-dev@680: smarteh-dev@680: profile = self.Manager.GetCurrentProfileName() smarteh-dev@680: if profile not in ("None", "DS-301"): smarteh-dev@680: other_profile_text = _("%s Profile") % profile smarteh-dev@680: add_menu.append((wx.ITEM_SEPARATOR, None)) smarteh-dev@680: for text, indexes in self.Manager.GetCurrentSpecificMenu(): smarteh-dev@680: add_menu.append((wx.ITEM_NORMAL, (text, wx.NewId(), '', self.GetProfileCallBack(text)))) smarteh-dev@680: else: smarteh-dev@680: other_profile_text = _('Other Profile') smarteh-dev@680: smarteh-dev@680: master_menu = [(wx.ITEM_NORMAL, (_('Node infos'), ID_NETWORKEDITORMASTERMENUNODEINFOS, '', self.OnNodeInfosMenu)), smarteh-dev@680: (wx.ITEM_NORMAL, (_('DS-301 Profile'), ID_NETWORKEDITORMASTERMENUDS301PROFILE, '', self.OnCommunicationMenu)), smarteh-dev@680: (wx.ITEM_NORMAL, (_('DS-302 Profile'), ID_NETWORKEDITORMASTERMENUDS302PROFILE, '', self.OnOtherCommunicationMenu)), smarteh-dev@680: (wx.ITEM_NORMAL, (other_profile_text, ID_NETWORKEDITORMASTERMENUDSOTHERPROFILE, '', self.OnEditProfileMenu)), smarteh-dev@680: (wx.ITEM_SEPARATOR, None), smarteh-dev@680: (add_menu, (_('Add'), ID_NETWORKEDITORMASTERMENUADD))] smarteh-dev@680: Edouard@717: return [(wx.ITEM_NORMAL, (_('Add slave'), ID_NETWORKEDITORCONFNODEMENUADDSLAVE, '', self.OnAddSlaveMenu)), Edouard@717: (wx.ITEM_NORMAL, (_('Remove slave'), ID_NETWORKEDITORCONFNODEMENUREMOVESLAVE, '', self.OnRemoveSlaveMenu)), smarteh-dev@680: (wx.ITEM_SEPARATOR, None), Edouard@717: (master_menu, (_('Master'), ID_NETWORKEDITORCONFNODEMENUMASTER))] smarteh-dev@680: smarteh-dev@680: def RefreshMainMenu(self): smarteh-dev@680: pass smarteh-dev@680: Edouard@717: def RefreshConfNodeMenu(self, confnode_menu): Edouard@717: confnode_menu.Enable(ID_NETWORKEDITORCONFNODEMENUMASTER, self.NetworkNodes.GetSelection() == 0) smarteh-dev@680: smarteh-dev@680: def GetTitle(self): Edouard@718: fullname = self.Controler.CTNFullName() smarteh-dev@680: if not self.Manager.CurrentIsSaved(): smarteh-dev@680: return "~%s~" % fullname smarteh-dev@680: return fullname smarteh-dev@680: smarteh-dev@680: def RefreshView(self): smarteh-dev@680: self.RefreshCurrentIndexList() smarteh-dev@680: smarteh-dev@680: def RefreshBufferState(self): smarteh-dev@680: NetworkEditorTemplate.RefreshBufferState(self) smarteh-dev@680: self.ParentWindow.RefreshTitle() smarteh-dev@680: self.ParentWindow.RefreshFileMenu() smarteh-dev@680: self.ParentWindow.RefreshEditMenu() smarteh-dev@680: self.ParentWindow.RefreshPageTitles() smarteh-dev@680: smarteh-dev@680: def OnNodeSelectedChanged(self, event): smarteh-dev@680: NetworkEditorTemplate.OnNodeSelectedChanged(self, event) Edouard@717: wx.CallAfter(self.ParentWindow.RefreshConfNodeMenu) smarteh-dev@680: