objdictgen/nodeeditor.py
author smarteh-dev
Thu, 09 Feb 2012 20:37:25 +0100
changeset 715 5795fb789230
child 745 0bd84a528133
permissions -rw-r--r--
Adding support for integration of panels in Beremiz
715
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
     1
import wx
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
     2
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
     3
from node import OD_Subindex, OD_MultipleSubindexes, OD_IdenticalSubindexes, OD_IdenticalIndexes
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
     4
from commondialogs import *
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
     5
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
     6
class NodeEditorTemplate:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
     7
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
     8
    EDITMENU_ID = None
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
     9
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    10
    def __init__(self, manager, frame, mode_solo):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    11
        self.Manager = manager
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    12
        self.Frame = frame
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    13
        self.ModeSolo = mode_solo
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    14
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    15
        self.BusId = None
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    16
        self.Closing = False
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    17
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    18
    def SetBusId(self, bus_id):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    19
        self.BusId = bus_id
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    20
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    21
    def GetBusId(self):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    22
        return self.BusId
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    23
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    24
    def IsClosing(self):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    25
        return self.Closing
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    26
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    27
    def OnAddSDOServerMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    28
        self.Manager.AddSDOServerToCurrent()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    29
        self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    30
        self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    31
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    32
    def OnAddSDOClientMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    33
        self.Manager.AddSDOClientToCurrent()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    34
        self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    35
        self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    36
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    37
    def OnAddPDOTransmitMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    38
        self.Manager.AddPDOTransmitToCurrent()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    39
        self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    40
        self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    41
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    42
    def OnAddPDOReceiveMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    43
        self.Manager.AddPDOReceiveToCurrent()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    44
        self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    45
        self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    46
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    47
    def OnAddMapVariableMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    48
        self.AddMapVariable()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    49
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    50
    def OnAddUserTypeMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    51
        self.AddUserType()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    52
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    53
    def OnRefreshMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    54
        self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    55
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    56
    def RefreshCurrentIndexList(self):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    57
        pass
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    58
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    59
    def RefreshStatusBar(self):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    60
        pass
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    61
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    62
    def SetStatusBarText(self, selection, manager):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    63
        if selection:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    64
            index, subIndex = selection
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    65
            if manager.IsCurrentEntry(index):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    66
                self.Frame.HelpBar.SetStatusText(_("Index: 0x%04X")%index, 0)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    67
                self.Frame.HelpBar.SetStatusText(_("Subindex: 0x%02X")%subIndex, 1)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    68
                entryinfos = manager.GetEntryInfos(index)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    69
                name = entryinfos["name"]
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    70
                category = _("Optional")
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    71
                if entryinfos["need"]:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    72
                    category = _("Mandatory")
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    73
                struct = "VAR"
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    74
                number = ""
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    75
                if entryinfos["struct"] & OD_IdenticalIndexes:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    76
                    number = _(" possibly defined %d times")%entryinfos["nbmax"]
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    77
                if entryinfos["struct"] & OD_IdenticalSubindexes:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    78
                    struct = "REC"
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    79
                elif entryinfos["struct"] & OD_MultipleSubindexes:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    80
                    struct = "ARRAY"
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    81
                text = _("%s: %s entry of struct %s%s.")%(name,category,struct,number)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    82
                self.Frame.HelpBar.SetStatusText(text, 2)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    83
            else:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    84
                for i in xrange(3):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    85
                    self.Frame.HelpBar.SetStatusText("", i)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    86
        else:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    87
            for i in xrange(3):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    88
                self.Frame.HelpBar.SetStatusText("", i)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    89
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    90
    def RefreshProfileMenu(self):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    91
        if self.EDITMENU_ID is not None:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    92
            profile = self.Manager.GetCurrentProfileName()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    93
            edititem = self.Frame.EditMenu.FindItemById(self.EDITMENU_ID)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    94
            if edititem:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    95
                length = self.Frame.AddMenu.GetMenuItemCount()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    96
                for i in xrange(length-6):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    97
                    additem = self.Frame.AddMenu.FindItemByPosition(6)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    98
                    self.Frame.AddMenu.Delete(additem.GetId())
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
    99
                if profile not in ("None", "DS-301"):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   100
                    edititem.SetText(_("%s Profile")%profile)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   101
                    edititem.Enable(True)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   102
                    self.Frame.AddMenu.AppendSeparator()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   103
                    for text, indexes in self.Manager.GetCurrentSpecificMenu():
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   104
                        new_id = wx.NewId()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   105
                        self.Frame.AddMenu.Append(help='', id=new_id, kind=wx.ITEM_NORMAL, text=text)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   106
                        self.Frame.Bind(wx.EVT_MENU, self.GetProfileCallBack(text), id=new_id)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   107
                else:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   108
                    edititem.SetText(_("Other Profile"))
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   109
                    edititem.Enable(False)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   110
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   111
#-------------------------------------------------------------------------------
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   112
#                            Buffer Functions
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   113
#-------------------------------------------------------------------------------
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   114
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   115
    def RefreshBufferState(self):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   116
        pass
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   117
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   118
    def OnUndoMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   119
        self.Manager.LoadCurrentPrevious()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   120
        self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   121
        self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   122
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   123
    def OnRedoMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   124
        self.Manager.LoadCurrentNext()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   125
        self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   126
        self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   127
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   128
#-------------------------------------------------------------------------------
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   129
#                          Editing Profiles functions
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   130
#-------------------------------------------------------------------------------
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   131
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   132
    def OnCommunicationMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   133
        dictionary,current = self.Manager.GetCurrentCommunicationLists()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   134
        self.EditProfile(_("Edit DS-301 Profile"), dictionary, current)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   135
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   136
    def OnOtherCommunicationMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   137
        dictionary,current = self.Manager.GetCurrentDS302Lists()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   138
        self.EditProfile(_("Edit DS-302 Profile"), dictionary, current)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   139
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   140
    def OnEditProfileMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   141
        title = _("Edit %s Profile") % self.Manager.GetCurrentProfileName()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   142
        dictionary,current = self.Manager.GetCurrentProfileLists()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   143
        self.EditProfile(title, dictionary, current)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   144
    
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   145
    def EditProfile(self, title, dictionary, current):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   146
        dialog = CommunicationDialog(self.Frame)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   147
        dialog.SetTitle(title)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   148
        dialog.SetIndexDictionary(dictionary)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   149
        dialog.SetCurrentList(current)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   150
        dialog.RefreshLists()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   151
        if dialog.ShowModal() == wx.ID_OK:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   152
            new_profile = dialog.GetCurrentList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   153
            addinglist = []
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   154
            removinglist = []
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   155
            for index in new_profile:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   156
                if index not in current:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   157
                    addinglist.append(index)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   158
            for index in current:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   159
                if index not in new_profile:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   160
                    removinglist.append(index)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   161
            self.Manager.ManageEntriesOfCurrent(addinglist, removinglist)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   162
            self.Manager.BufferCurrentNode()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   163
            self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   164
            
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   165
        dialog.Destroy()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   166
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   167
    def GetProfileCallBack(self, text):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   168
        def ProfileCallBack(event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   169
            self.Manager.AddSpecificEntryToCurrent(text)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   170
            self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   171
            self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   172
        return ProfileCallBack
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   173
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   174
#-------------------------------------------------------------------------------
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   175
#                         Edit Node informations function
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   176
#-------------------------------------------------------------------------------
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   177
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   178
    def OnNodeInfosMenu(self, event):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   179
        dialog = NodeInfosDialog(self.Frame)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   180
        name, id, type, description = self.Manager.GetCurrentNodeInfos()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   181
        defaultstringsize = self.Manager.GetCurrentNodeDefaultStringSize()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   182
        dialog.SetValues(name, id, type, description, defaultstringsize)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   183
        if dialog.ShowModal() == wx.ID_OK:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   184
            name, id, type, description, defaultstringsize = dialog.GetValues()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   185
            self.Manager.SetCurrentNodeInfos(name, id, type, description)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   186
            self.Manager.SetCurrentNodeDefaultStringSize(defaultstringsize)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   187
            self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   188
            self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   189
            self.RefreshProfileMenu()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   190
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   191
#-------------------------------------------------------------------------------
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   192
#                           Add User Types and Variables
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   193
#-------------------------------------------------------------------------------
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   194
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   195
    def AddMapVariable(self):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   196
        index = self.Manager.GetCurrentNextMapIndex()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   197
        if index:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   198
            dialog = MapVariableDialog(self.Frame)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   199
            dialog.SetIndex(index)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   200
            if dialog.ShowModal() == wx.ID_OK:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   201
                result = self.Manager.AddMapVariableToCurrent(*dialog.GetValues())
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   202
                if not isinstance(result, (StringType, UnicodeType)):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   203
                    self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   204
                    self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   205
                else:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   206
                    self.ShowErrorMessage(result)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   207
            dialog.Destroy()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   208
        else:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   209
            self.ShowErrorMessage(_("No map variable index left!"))
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   210
        
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   211
    def AddUserType(self):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   212
        dialog = UserTypeDialog(self)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   213
        dialog.SetTypeList(self.Manager.GetCustomisableTypes())
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   214
        if dialog.ShowModal() == wx.ID_OK:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   215
            result = self.Manager.AddUserTypeToCurrent(*dialog.GetValues())
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   216
            if not isinstance(result, (StringType, UnicodeType)):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   217
                self.RefreshBufferState()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   218
                self.RefreshCurrentIndexList()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   219
            else:
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   220
                self.ShowErrorMessage(result)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   221
        dialog.Destroy()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   222
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   223
    def ShowErrorMessage(self, message):
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   224
        message = wx.MessageDialog(self.Frame, message, _("Error"), wx.OK|wx.ICON_ERROR)
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   225
        message.ShowModal()
5795fb789230 Adding support for integration of panels in Beremiz
smarteh-dev
parents:
diff changeset
   226
        message.Destroy()