smarteh-dev@682: import os, sys smarteh-dev@682: base_folder = os.path.split(sys.path[0])[0] smarteh-dev@682: CanFestivalPath = os.path.join(base_folder, "CanFestival-3") smarteh-dev@682: smarteh-dev@682: import wx smarteh-dev@682: smarteh-dev@682: from subindextable import EditingPanel smarteh-dev@682: from nodeeditor import NodeEditorTemplate smarteh-dev@682: from controls import EditorPanel smarteh-dev@682: smarteh-dev@682: [ID_SLAVEEDITORPLUGINMENUNODEINFOS, ID_SLAVEEDITORPLUGINMENUDS301PROFILE, smarteh-dev@682: ID_SLAVEEDITORPLUGINMENUDS302PROFILE, ID_SLAVEEDITORPLUGINMENUDSOTHERPROFILE, smarteh-dev@682: ID_SLAVEEDITORPLUGINMENUADD, smarteh-dev@682: ] = [wx.NewId() for _init_coll_PluginMenu_Items in range(5)] smarteh-dev@682: smarteh-dev@682: [ID_SLAVEEDITORADDMENUSDOSERVER, ID_SLAVEEDITORADDMENUSDOCLIENT, smarteh-dev@682: ID_SLAVEEDITORADDMENUPDOTRANSMIT, ID_SLAVEEDITORADDMENUPDORECEIVE, smarteh-dev@682: ID_SLAVEEDITORADDMENUMAPVARIABLE, ID_SLAVEEDITORADDMENUUSERTYPE, smarteh-dev@682: ] = [wx.NewId() for _init_coll_AddMenu_Items in range(6)] smarteh-dev@682: smarteh-dev@682: class SlaveEditor(EditorPanel, NodeEditorTemplate): smarteh-dev@682: smarteh-dev@682: def _init_Editor(self, prnt): smarteh-dev@682: self.Editor = EditingPanel(prnt, self, self.Controler, self.Editable) smarteh-dev@682: smarteh-dev@682: def __init__(self, parent, controler, window, editable=True): smarteh-dev@682: self.Editable = editable smarteh-dev@682: EditorPanel.__init__(self, parent, "", window, controler) smarteh-dev@682: NodeEditorTemplate.__init__(self, controler, window, False) smarteh-dev@682: smarteh-dev@682: img = wx.Bitmap(os.path.join(CanFestivalPath, "objdictgen", "networkedit.png"), wx.BITMAP_TYPE_PNG).ConvertToImage() smarteh-dev@682: self.SetIcon(wx.BitmapFromImage(img.Rescale(16, 16))) smarteh-dev@682: smarteh-dev@682: def __del__(self): smarteh-dev@682: self.Controler.OnCloseEditor(self) smarteh-dev@682: smarteh-dev@682: def GetPluginMenuItems(self): smarteh-dev@682: if self.Editable: smarteh-dev@682: add_menu = [(wx.ITEM_NORMAL, (_('SDO Server'), ID_SLAVEEDITORADDMENUSDOSERVER, '', self.OnAddSDOServerMenu)), smarteh-dev@682: (wx.ITEM_NORMAL, (_('SDO Client'), ID_SLAVEEDITORADDMENUSDOCLIENT, '', self.OnAddSDOClientMenu)), smarteh-dev@682: (wx.ITEM_NORMAL, (_('PDO Transmit'), ID_SLAVEEDITORADDMENUPDOTRANSMIT, '', self.OnAddPDOTransmitMenu)), smarteh-dev@682: (wx.ITEM_NORMAL, (_('PDO Receive'), ID_SLAVEEDITORADDMENUPDORECEIVE, '', self.OnAddPDOReceiveMenu)), smarteh-dev@682: (wx.ITEM_NORMAL, (_('Map Variable'), ID_SLAVEEDITORADDMENUMAPVARIABLE, '', self.OnAddMapVariableMenu)), smarteh-dev@682: (wx.ITEM_NORMAL, (_('User Type'), ID_SLAVEEDITORADDMENUUSERTYPE, '', self.OnAddUserTypeMenu))] smarteh-dev@682: smarteh-dev@682: profile = self.Controler.GetCurrentProfileName() smarteh-dev@682: if profile not in ("None", "DS-301"): smarteh-dev@682: other_profile_text = _("%s Profile") % profile smarteh-dev@682: add_menu.append((wx.ITEM_SEPARATOR, None)) smarteh-dev@682: for text, indexes in self.Manager.GetCurrentSpecificMenu(): smarteh-dev@682: add_menu.append((wx.ITEM_NORMAL, (text, wx.NewId(), '', self.GetProfileCallBack(text)))) smarteh-dev@682: else: smarteh-dev@682: other_profile_text = _('Other Profile') smarteh-dev@682: smarteh-dev@682: return [(wx.ITEM_NORMAL, (_('Node infos'), ID_SLAVEEDITORPLUGINMENUNODEINFOS, '', self.OnNodeInfosMenu)), smarteh-dev@682: (wx.ITEM_NORMAL, (_('DS-301 Profile'), ID_SLAVEEDITORPLUGINMENUDS301PROFILE, '', self.OnCommunicationMenu)), smarteh-dev@682: (wx.ITEM_NORMAL, (_('DS-302 Profile'), ID_SLAVEEDITORPLUGINMENUDS302PROFILE, '', self.OnOtherCommunicationMenu)), smarteh-dev@682: (wx.ITEM_NORMAL, (other_profile_text, ID_SLAVEEDITORPLUGINMENUDSOTHERPROFILE, '', self.OnEditProfileMenu)), smarteh-dev@682: (wx.ITEM_SEPARATOR, None), smarteh-dev@682: (add_menu, (_('Add'), ID_SLAVEEDITORPLUGINMENUADD))] smarteh-dev@682: return [] smarteh-dev@682: smarteh-dev@682: def RefreshPluginMenu(self, plugin_menu): smarteh-dev@682: plugin_menu.Enable(ID_SLAVEEDITORPLUGINMENUDSOTHERPROFILE, False) smarteh-dev@682: smarteh-dev@682: def GetTitle(self): smarteh-dev@682: fullname = self.Controler.PlugFullName() smarteh-dev@682: if not self.Controler.CurrentIsSaved(): smarteh-dev@682: return "~%s~" % fullname smarteh-dev@682: return fullname smarteh-dev@682: smarteh-dev@682: def RefreshView(self): smarteh-dev@682: self.Editor.RefreshIndexList() smarteh-dev@682: smarteh-dev@682: def RefreshCurrentIndexList(self): smarteh-dev@682: self.RefreshView() smarteh-dev@682: smarteh-dev@682: def RefreshBufferState(self): smarteh-dev@682: self.ParentWindow.RefreshTitle() smarteh-dev@682: self.ParentWindow.RefreshFileMenu() smarteh-dev@682: self.ParentWindow.RefreshEditMenu() smarteh-dev@682: self.ParentWindow.RefreshPageTitles() smarteh-dev@682: