objdictgen/subindextable.py
author etisserant
Fri, 31 Aug 2007 10:19:46 +0200
changeset 263 d221d387ad2f
parent 254 f2b0acb54e65
child 266 8678a3cf7fe7
permissions -rw-r--r--
Minor changes in SYNC. Splitted SendSync in SendSync and SendSyncMessage to allow manual SYNC message transmission and separate SYNC proceeding (synced TPDOs)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
     1
#!/usr/bin/env python
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
     2
# -*- coding: utf-8 -*-
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
     3
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
     4
#This file is part of CanFestival, a library implementing CanOpen Stack. 
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
     5
#
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
     6
#Copyright (C): Edouard TISSERANT, Francis DUPIN and Laurent BESSARD
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
     7
#
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
     8
#See COPYING file for copyrights details.
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
     9
#
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    10
#This library is free software; you can redistribute it and/or
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    11
#modify it under the terms of the GNU Lesser General Public
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    12
#License as published by the Free Software Foundation; either
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    13
#version 2.1 of the License, or (at your option) any later version.
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    14
#
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    15
#This library is distributed in the hope that it will be useful,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    16
#but WITHOUT ANY WARRANTY; without even the implied warranty of
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    17
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    18
#Lesser General Public License for more details.
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    19
#
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    20
#You should have received a copy of the GNU Lesser General Public
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    21
#License along with this library; if not, write to the Free Software
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    22
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    23
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    24
import wx
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    25
import wx.grid
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    26
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    27
from types import *
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    28
206
6787754b251b Bugs corrected on objdictedit and networkdict
greg
parents: 205
diff changeset
    29
from node import OD_Subindex, OD_MultipleSubindexes, OD_IdenticalSubindexes, OD_IdenticalIndexes
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    30
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    31
ColSizes = [75, 250, 150, 125, 100, 60, 250]
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
    32
ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_RIGHT, wx.ALIGN_CENTER, wx.ALIGN_CENTER, wx.ALIGN_LEFT]
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    33
AccessList = "Read Only,Write Only,Read/Write"
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    34
RAccessList = "Read Only,Read/Write"
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    35
BoolList = "True,False"
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    36
OptionList = "Yes,No"
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    37
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    38
DictionaryOrganisation = [
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    39
    {"minIndex" : 0x0001, "maxIndex" : 0x0FFF, "name" : "Data Type Definitions"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    40
    {"minIndex" : 0x1000, "maxIndex" : 0x1029, "name" : "Communication Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    41
    {"minIndex" : 0x1200, "maxIndex" : 0x12FF, "name" : "SDO Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    42
    {"minIndex" : 0x1400, "maxIndex" : 0x15FF, "name" : "Receive PDO Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    43
    {"minIndex" : 0x1600, "maxIndex" : 0x17FF, "name" : "Receive PDO Mapping"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    44
    {"minIndex" : 0x1800, "maxIndex" : 0x19FF, "name" : "Transmit PDO Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    45
    {"minIndex" : 0x1A00, "maxIndex" : 0x1BFF, "name" : "Transmit PDO Mapping"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    46
    {"minIndex" : 0x1C00, "maxIndex" : 0x1FFF, "name" : "Other Communication Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    47
    {"minIndex" : 0x2000, "maxIndex" : 0x5FFF, "name" : "Manufacturer Specific"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    48
    {"minIndex" : 0x6000, "maxIndex" : 0x9FFF, "name" : "Standardized Device Profile"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    49
    {"minIndex" : 0xA000, "maxIndex" : 0xBFFF, "name" : "Standardized Interface Profile"}]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    50
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
    51
SizeConversion = {1 : "X", 8 : "B", 16 : "W", 24 : "D", 32 : "D", 40 : "L", 48 : "L", 56 : "L", 64 : "L"}
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
    52
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
    53
class SubindexTable(wx.grid.PyGridTableBase):
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    54
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    55
    """
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    56
    A custom wxGrid Table using user supplied data
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    57
    """
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    58
    def __init__(self, parent, data, editors, colnames):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    59
        # The base class must be initialized *first*
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
    60
        wx.grid.PyGridTableBase.__init__(self)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    61
        self.data = data
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    62
        self.editors = editors
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    63
        self.CurrentIndex = 0
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    64
        self.colnames = colnames
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    65
        self.Parent = parent
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    66
        self.Editable = True
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    67
        # XXX
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    68
        # we need to store the row length and collength to
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    69
        # see if the table has changed size
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    70
        self._rows = self.GetNumberRows()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    71
        self._cols = self.GetNumberCols()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    72
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    73
    def Disable(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    74
        self.Editable = False
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    75
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    76
    def Enable(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    77
        self.Editable = True
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    78
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    79
    def GetNumberCols(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    80
        return len(self.colnames)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    81
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    82
    def GetNumberRows(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    83
        return len(self.data)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    84
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    85
    def GetColLabelValue(self, col):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    86
        if col < len(self.colnames):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    87
            return self.colnames[col]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    88
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    89
    def GetRowLabelValues(self, row):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    90
        return row
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    91
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    92
    def GetValue(self, row, col):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    93
        if row < self.GetNumberRows():
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    94
            value = self.data[row].get(self.GetColLabelValue(col), "")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    95
            if (type(value) == UnicodeType):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    96
                return value
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    97
            else: 
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    98
                return str(value)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    99
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   100
    def GetEditor(self, row, col):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   101
        if row < self.GetNumberRows():
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   102
            return self.editors[row].get(self.GetColLabelValue(col), "")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   103
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   104
    def GetValueByName(self, row, colname):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   105
        return self.data[row].get(colname)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   106
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   107
    def SetValue(self, row, col, value):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   108
        if col < len(self.colnames):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   109
            self.data[row][self.GetColLabelValue(col)] = value
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   110
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   111
    def ResetView(self, grid):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   112
        """
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   113
        (wx.grid.Grid) -> Reset the grid view.   Call this to
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   114
        update the grid if rows and columns have been added or deleted
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   115
        """
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   116
        grid.BeginBatch()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   117
        for current, new, delmsg, addmsg in [
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   118
            (self._rows, self.GetNumberRows(), wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED),
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   119
            (self._cols, self.GetNumberCols(), wx.grid.GRIDTABLE_NOTIFY_COLS_DELETED, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED),
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   120
        ]:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   121
            if new < current:
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   122
                msg = wx.grid.GridTableMessage(self,delmsg,new,current-new)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   123
                grid.ProcessTableMessage(msg)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   124
            elif new > current:
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   125
                msg = wx.grid.GridTableMessage(self,addmsg,new-current)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   126
                grid.ProcessTableMessage(msg)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   127
                self.UpdateValues(grid)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   128
        grid.EndBatch()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   129
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   130
        self._rows = self.GetNumberRows()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   131
        self._cols = self.GetNumberCols()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   132
        # update the column rendering scheme
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   133
        self._updateColAttrs(grid)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   134
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   135
        # update the scrollbars and the displayed part of the grid
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   136
        grid.AdjustScrollbars()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   137
        grid.ForceRefresh()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   138
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   139
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   140
    def UpdateValues(self, grid):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   141
        """Update all displayed values"""
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   142
        # This sends an event to the grid table to update all of the values
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   143
        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_REQUEST_VIEW_GET_VALUES)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   144
        grid.ProcessTableMessage(msg)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   145
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   146
    def _updateColAttrs(self, grid):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   147
        """
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   148
        wx.grid.Grid -> update the column attributes to add the
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   149
        appropriate renderer given the column name.
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   150
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   151
        Otherwise default to the default renderer.
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   152
        """
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   153
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   154
        for col in range(self.GetNumberCols()):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   155
            attr = wx.grid.GridCellAttr()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   156
            attr.SetAlignment(ColAlignements[col], wx.ALIGN_CENTRE)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   157
            grid.SetColAttr(col, attr)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   158
            grid.SetColSize(col, ColSizes[col])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   159
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   160
        typelist = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   161
        maplist = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   162
        for row in range(self.GetNumberRows()):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   163
            editors = self.editors[row]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   164
            for col in range(self.GetNumberCols()):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   165
                editor = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   166
                renderer = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   167
                
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   168
                colname = self.GetColLabelValue(col)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   169
                editortype = editors[colname]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   170
                if editortype and self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   171
                    grid.SetReadOnly(row, col, False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   172
                    if editortype == "string":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   173
                        editor = wx.grid.GridCellTextEditor()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   174
                        renderer = wx.grid.GridCellStringRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   175
                        if colname == "value" and "length" in editors:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   176
                            editor.SetParameters(editors["length"]) 
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   177
                    elif editortype == "number":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   178
                        editor = wx.grid.GridCellNumberEditor()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   179
                        renderer = wx.grid.GridCellNumberRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   180
                        if colname == "value" and "min" in editors and "max" in editors:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   181
                            editor.SetParameters("%s,%s"%(editors["min"],editors["max"]))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   182
                    elif editortype == "real":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   183
                        editor = wx.grid.GridCellFloatEditor()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   184
                        renderer = wx.grid.GridCellFloatRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   185
                        if colname == "value" and "min" in editors and "max" in editors:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   186
                            editor.SetParameters("%s,%s"%(editors["min"],editors["max"]))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   187
                    elif editortype == "bool":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   188
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   189
                        editor.SetParameters(BoolList)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   190
                    elif editortype == "access":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   191
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   192
                        editor.SetParameters(AccessList)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   193
                    elif editortype == "raccess":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   194
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   195
                        editor.SetParameters(RAccessList)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   196
                    elif editortype == "option":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   197
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   198
                        editor.SetParameters(OptionList)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   199
                    elif editortype == "type":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   200
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   201
                        if typelist == None:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   202
                            typelist = self.Parent.Manager.GetCurrentTypeList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   203
                        editor.SetParameters(typelist)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   204
                    elif editortype == "map":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   205
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   206
                        if maplist == None:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   207
                            maplist = self.Parent.Manager.GetCurrentMapList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   208
                        editor.SetParameters(maplist)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   209
                    elif editortype == "time":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   210
                        editor = wx.grid.GridCellTextEditor()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   211
                        renderer = wx.grid.GridCellStringRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   212
                    elif editortype == "domain":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   213
                        editor = wx.grid.GridCellTextEditor()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   214
                        renderer = wx.grid.GridCellStringRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   215
                else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   216
                    grid.SetReadOnly(row, col, True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   217
                    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   218
                grid.SetCellEditor(row, col, editor)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   219
                grid.SetCellRenderer(row, col, renderer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   220
                
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   221
                grid.SetCellBackgroundColour(row, col, wx.WHITE)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   222
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   223
    def SetData(self, data):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   224
        self.data = data
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   225
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   226
    def SetEditors(self, editors):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   227
        self.editors = editors
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   228
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   229
    def GetCurrentIndex(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   230
        return self.CurrentIndex
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   231
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   232
    def SetCurrentIndex(self, index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   233
        self.CurrentIndex = index
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   234
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   235
    def AppendRow(self, row_content):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   236
        self.data.append(row_content)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   237
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   238
    def Empty(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   239
        self.data = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   240
        self.editors = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   241
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   242
[ID_EDITINGPANEL, ID_EDITINGPANELADDBUTTON, ID_EDITINGPANELINDEXCHOICE, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   243
 ID_EDITINGPANELINDEXLIST, ID_EDITINGPANELINDEXLISTPANEL, ID_EDITINGPANELPARTLIST, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   244
 ID_EDITINGPANELSECONDSPLITTER, ID_EDITINGPANELSUBINDEXGRID,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   245
 ID_EDITINGPANELSUBINDEXGRIDPANEL, ID_EDITINGPANELCALLBACKCHECK,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   246
] = [wx.NewId() for _init_ctrls in range(10)]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   247
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   248
[ID_EDITINGPANELINDEXLISTMENUITEMS0, ID_EDITINGPANELINDEXLISTMENUITEMS1, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   249
 ID_EDITINGPANELINDEXLISTMENUITEMS2, 
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   250
] = [wx.NewId() for _init_coll_IndexListMenu_Items in range(3)]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   251
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   252
[ID_EDITINGPANELMENU1ITEMS0, ID_EDITINGPANELMENU1ITEMS1, 
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   253
] = [wx.NewId() for _init_coll_SubindexGridMenu_Items in range(2)]
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   254
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   255
class EditingPanel(wx.SplitterWindow):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   256
    def _init_coll_AddToListSizer_Items(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   257
        parent.AddWindow(self.AddButton, 0, border=0, flag=0)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   258
        parent.AddWindow(self.IndexChoice, 0, border=0, flag=wx.GROW)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   259
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   260
    def _init_coll_SubindexGridSizer_Items(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   261
        parent.AddWindow(self.CallbackCheck, 0, border=0, flag=0)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   262
        parent.AddWindow(self.SubindexGrid, 0, border=0, flag=wx.GROW)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   263
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   264
    def _init_coll_IndexListSizer_Items(self, parent):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   265
        parent.AddWindow(self.IndexList, 0, border=0, flag=wx.GROW)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   266
        parent.AddSizer(self.AddToListSizer, 0, border=0, flag=wx.GROW)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   267
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   268
    def _init_coll_AddToListSizer_Growables(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   269
        parent.AddGrowableCol(1)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   270
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   271
    def _init_coll_SubindexGridSizer_Growables(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   272
        parent.AddGrowableCol(0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   273
        parent.AddGrowableRow(1)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   274
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   275
    def _init_coll_IndexListSizer_Growables(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   276
        parent.AddGrowableCol(0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   277
        parent.AddGrowableRow(0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   278
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   279
    def _init_coll_SubindexGridMenu_Items(self, parent):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   280
        parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS0,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   281
              kind=wx.ITEM_NORMAL, text='Add')
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   282
        parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS1,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   283
              kind=wx.ITEM_NORMAL, text='Delete')
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   284
        self.Bind(wx.EVT_MENU, self.OnAddSubindexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   285
              id=ID_EDITINGPANELMENU1ITEMS0)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   286
        self.Bind(wx.EVT_MENU, self.OnDeleteSubindexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   287
              id=ID_EDITINGPANELMENU1ITEMS1)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   288
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   289
    def _init_coll_IndexListMenu_Items(self, parent):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   290
        parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS0,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   291
              kind=wx.ITEM_NORMAL, text='Rename')
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   292
        parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS2,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   293
              kind=wx.ITEM_NORMAL, text='Modify')
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   294
        parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS1,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   295
              kind=wx.ITEM_NORMAL, text='Delete')
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   296
        self.Bind(wx.EVT_MENU, self.OnRenameIndexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   297
              id=ID_EDITINGPANELINDEXLISTMENUITEMS0)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   298
        self.Bind(wx.EVT_MENU, self.OnDeleteIndexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   299
              id=ID_EDITINGPANELINDEXLISTMENUITEMS1)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   300
        self.Bind(wx.EVT_MENU, self.OnModifyIndexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   301
              id=ID_EDITINGPANELINDEXLISTMENUITEMS2)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   302
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   303
    def _init_utils(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   304
        self.IndexListMenu = wx.Menu(title='')
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   305
        self.SubindexGridMenu = wx.Menu(title='')
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   306
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   307
        self._init_coll_IndexListMenu_Items(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   308
        self._init_coll_SubindexGridMenu_Items(self.SubindexGridMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   309
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   310
    def _init_sizers(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   311
        self.IndexListSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   312
        self.SubindexGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   313
        self.AddToListSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=1, vgap=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   314
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   315
        self._init_coll_IndexListSizer_Growables(self.IndexListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   316
        self._init_coll_IndexListSizer_Items(self.IndexListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   317
        self._init_coll_SubindexGridSizer_Growables(self.SubindexGridSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   318
        self._init_coll_SubindexGridSizer_Items(self.SubindexGridSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   319
        self._init_coll_AddToListSizer_Growables(self.AddToListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   320
        self._init_coll_AddToListSizer_Items(self.AddToListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   321
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   322
        self.SubindexGridPanel.SetSizer(self.SubindexGridSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   323
        self.IndexListPanel.SetSizer(self.IndexListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   324
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   325
    def _init_ctrls(self, prnt):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   326
        wx.SplitterWindow.__init__(self, id=ID_EDITINGPANEL,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   327
              name='MainSplitter', parent=prnt, point=wx.Point(0, 0),
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   328
              size=wx.Size(-1, -1), style=wx.SP_3D)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   329
        self._init_utils()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   330
        self.SetNeedUpdating(True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   331
        self.SetMinimumPaneSize(1)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   332
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   333
        self.PartList = wx.ListBox(choices=[], id=ID_EDITINGPANELPARTLIST,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   334
              name='PartList', parent=self, pos=wx.Point(0, 0),
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   335
              size=wx.Size(-1, -1), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   336
        self.PartList.Bind(wx.EVT_LISTBOX, self.OnPartListBoxClick,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   337
              id=ID_EDITINGPANELPARTLIST)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   338
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   339
        self.SecondSplitter = wx.SplitterWindow(id=ID_EDITINGPANELSECONDSPLITTER,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   340
              name='SecondSplitter', parent=self, point=wx.Point(0, 0), 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   341
              size=wx.Size(-1, -1), style=wx.SP_3D)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   342
        self.SecondSplitter.SetMinimumPaneSize(1)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   343
        self.SplitHorizontally(self.PartList, self.SecondSplitter,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   344
              110)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   345
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   346
        self.SubindexGridPanel = wx.Panel(id=ID_EDITINGPANELSUBINDEXGRIDPANEL,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   347
              name='SubindexGridPanel', parent=self.SecondSplitter, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   348
              pos=wx.Point(0, 0), size=wx.Size(-1, -1), style=wx.TAB_TRAVERSAL)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   349
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   350
        self.IndexListPanel = wx.Panel(id=ID_EDITINGPANELINDEXLISTPANEL,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   351
              name='IndexListPanel', parent=self.SecondSplitter, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   352
              pos=wx.Point(0, 0), size=wx.Size(-1, -1), style=wx.TAB_TRAVERSAL)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   353
        self.SecondSplitter.SplitVertically(self.IndexListPanel,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   354
              self.SubindexGridPanel, 280)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   355
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   356
        self.SubindexGrid = wx.grid.Grid(id=ID_EDITINGPANELSUBINDEXGRID,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   357
              name='SubindexGrid', parent=self.SubindexGridPanel, pos=wx.Point(0,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   358
              0), size=wx.Size(-1, -1), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   359
        self.SubindexGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   360
              'Sans'))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   361
        self.SubindexGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   362
              False, 'Sans'))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   363
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   364
              self.OnSubindexGridCellChange)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   365
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   366
              self.OnSubindexGridRightClick)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   367
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   368
              self.OnSubindexGridSelectCell)
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   369
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnSubindexGridCellLeftClick)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   370
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   371
        self.CallbackCheck = wx.CheckBox(id=ID_EDITINGPANELCALLBACKCHECK,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   372
              label='Have Callbacks', name='CallbackCheck',
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   373
              parent=self.SubindexGridPanel, pos=wx.Point(0, 0), size=wx.Size(152,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   374
              24), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   375
        self.CallbackCheck.Bind(wx.EVT_CHECKBOX, self.OnCallbackCheck,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   376
              id=ID_EDITINGPANELCALLBACKCHECK)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   377
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   378
        self.IndexList = wx.ListBox(choices=[], id=ID_EDITINGPANELINDEXLIST,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   379
              name='IndexList', parent=self.IndexListPanel, pos=wx.Point(0, 0),
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   380
              size=wx.Size(-1, -1), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   381
        self.IndexList.Bind(wx.EVT_LISTBOX, self.OnIndexListClick,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   382
              id=ID_EDITINGPANELINDEXLIST)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   383
        self.IndexList.Bind(wx.EVT_RIGHT_UP, self.OnIndexListRightUp)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   384
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   385
        self.AddButton = wx.Button(id=ID_EDITINGPANELADDBUTTON, label='Add',
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   386
              name='AddButton', parent=self.IndexListPanel, pos=wx.Point(0, 0),
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   387
              size=wx.Size(50, 30), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   388
        self.AddButton.Bind(wx.EVT_BUTTON, self.OnAddButtonClick,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   389
              id=ID_EDITINGPANELADDBUTTON)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   390
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   391
        self.IndexChoice = wx.Choice(choices=[], id=ID_EDITINGPANELINDEXCHOICE,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   392
              name='IndexChoice', parent=self.IndexListPanel, pos=wx.Point(50,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   393
              0), size=wx.Size(-1, 30), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   394
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   395
        self._init_sizers()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   396
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   397
    def __init__(self, parent, manager, editable = True):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   398
        self._init_ctrls(parent.GetNoteBook())
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   399
        self.Parent = parent
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   400
        self.Manager = manager
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   401
        self.ListIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   402
        self.ChoiceIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   403
        self.FirstCall = False
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   404
        self.Editable = editable
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   405
        self.Index = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   406
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   407
        for values in DictionaryOrganisation:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   408
            text = "   0x%04X-0x%04X      %s"%(values["minIndex"],values["maxIndex"],values["name"])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   409
            self.PartList.Append(text)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   410
        self.Table = SubindexTable(self, [], [], ["subindex", "name", "type", "value", "access", "save", "comment"])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   411
        self.SubindexGrid.SetTable(self.Table)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   412
        self.SubindexGrid.SetRowLabelSize(0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   413
        self.CallbackCheck.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   414
        self.Table.ResetView(self.SubindexGrid)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   415
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   416
        if not self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   417
            self.AddButton.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   418
            self.IndexChoice.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   419
            self.CallbackCheck.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   420
            self.Table.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   421
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   422
    def GetIndex(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   423
        return self.Index
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   424
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   425
    def SetIndex(self, index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   426
        self.Index = index
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   427
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   428
    def GetSelection(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   429
        selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   430
        if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   431
            index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   432
            subIndex = self.SubindexGrid.GetGridCursorRow()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   433
            return index, subIndex
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   434
        return None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   435
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   436
    def OnSubindexGridCellLeftClick(self, event):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   437
        wx.CallAfter(self.BeginDrag)
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   438
        event.Skip()
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   439
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   440
    def OnAddButtonClick(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   441
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   442
            self.SubindexGrid.SetGridCursor(0, 0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   443
            selected = self.IndexChoice.GetStringSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   444
            if selected != "":
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   445
                if selected == "User Type":
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   446
                    self.Parent.AddUserType()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   447
                elif selected == "SDO Server":
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   448
                    self.Manager.AddSDOServerToCurrent()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   449
                elif selected == "SDO Client":
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   450
                    self.Manager.AddSDOClientToCurrent()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   451
                elif selected == "PDO Receive":
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   452
                    self.Manager.AddPDOReceiveToCurrent()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   453
                elif selected == "PDO Transmit":
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   454
                    self.Manager.AddPDOTransmitToCurrent()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   455
                elif selected == "Map Variable":
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   456
                    self.Parent.AddMapVariable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   457
                elif selected in [menu for menu, indexes in self.Manager.GetCurrentSpecificMenu()]:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   458
                    self.Manager.AddSpecificEntryToCurrent(selected)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   459
                else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   460
                    index = self.ChoiceIndex[self.IndexChoice.GetSelection()]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   461
                    self.Manager.ManageEntriesOfCurrent([index], [])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   462
                self.Parent.RefreshBufferState()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   463
                self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   464
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   465
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   466
    def OnPartListBoxClick(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   467
        self.SubindexGrid.SetGridCursor(0, 0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   468
        self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   469
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   470
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   471
    def OnIndexListClick(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   472
        self.SubindexGrid.SetGridCursor(0, 0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   473
        self.RefreshTable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   474
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   475
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   476
    def OnSubindexGridSelectCell(self, event):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   477
        wx.CallAfter(self.BeginDrag)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   478
        wx.CallAfter(self.Parent.RefreshStatusBar)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   479
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   480
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   481
    def BeginDrag(self):
243
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   482
        if not self.Parent.ModeSolo:
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   483
            row = self.SubindexGrid.GetGridCursorRow()
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   484
            col = self.SubindexGrid.GetGridCursorCol()
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   485
            if not self.Editable and col == 0:
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   486
                selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   487
                if selected != wx.NOT_FOUND:
243
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   488
                    index = self.ListIndex[selected]
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   489
                    subindex = self.SubindexGrid.GetGridCursorRow()
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   490
                    entry_infos = self.Manager.GetEntryInfos(index)
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   491
                    if not entry_infos["struct"] & OD_MultipleSubindexes or row != 0:
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   492
                        subentry_infos = self.Manager.GetSubentryInfos(index, subindex)
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   493
                        typeinfos = self.Manager.GetEntryInfos(subentry_infos["type"])
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   494
                        if subentry_infos["pdo"] and typeinfos:
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   495
                            bus_id = self.Parent.GetBusId()
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   496
                            node_id = self.Parent.GetCurrentNodeId()
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   497
                            size = typeinfos["size"]
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   498
                            data = wx.TextDataObject(str(("%s%d.%d.%d.%d"%(SizeConversion[size], bus_id, node_id, index, subindex), "location")))
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   499
                            dragSource = wx.DropSource(self.SubindexGrid)
243
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   500
                            dragSource.SetData(data)
7fcc129a06ce Some bugs fixed
lbessard
parents: 242
diff changeset
   501
                            dragSource.DoDragDrop()
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   502
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   503
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   504
#                             Refresh Functions
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   505
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   506
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   507
    def RefreshIndexList(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   508
        selected = self.IndexList.GetSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   509
        choice = self.IndexChoice.GetStringSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   510
        choiceindex = self.IndexChoice.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   511
        if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   512
            selectedindex = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   513
        self.IndexList.Clear()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   514
        self.IndexChoice.Clear()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   515
        i = self.PartList.GetSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   516
        if i < len(DictionaryOrganisation):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   517
            values = DictionaryOrganisation[i]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   518
            self.ListIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   519
            for name, index in self.Manager.GetCurrentValidIndexes(values["minIndex"], values["maxIndex"]):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   520
                self.IndexList.Append("0x%04X   %s"%(index, name))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   521
                self.ListIndex.append(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   522
            if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   523
                self.ChoiceIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   524
                if i == 0:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   525
                    self.IndexChoice.Append("User Type")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   526
                    self.IndexChoice.SetStringSelection("User Type")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   527
                elif i == 2:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   528
                    self.IndexChoice.Append("SDO Server")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   529
                    self.IndexChoice.Append("SDO Client")
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   530
                    if choiceindex != wx.NOT_FOUND and choice == self.IndexChoice.GetString(choiceindex):
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   531
                         self.IndexChoice.SetStringSelection(choice)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   532
                elif i in (3, 4):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   533
                    self.IndexChoice.Append("PDO Receive")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   534
                    self.IndexChoice.SetStringSelection("PDO Receive")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   535
                elif i in (5, 6):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   536
                    self.IndexChoice.Append("PDO Transmit")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   537
                    self.IndexChoice.SetStringSelection("PDO Transmit")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   538
                elif i == 8:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   539
                    self.IndexChoice.Append("Map Variable")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   540
                    self.IndexChoice.SetStringSelection("Map Variable")
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   541
                else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   542
                    for name, index in self.Manager.GetCurrentValidChoices(values["minIndex"], values["maxIndex"]):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   543
                        if index:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   544
                            self.IndexChoice.Append("0x%04X   %s"%(index, name))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   545
                        else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   546
                            self.IndexChoice.Append(name)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   547
                        self.ChoiceIndex.append(index)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   548
                if choiceindex != wx.NOT_FOUND and choice == self.IndexChoice.GetString(choiceindex):
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   549
                    self.IndexChoice.SetStringSelection(choice)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   550
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   551
            self.IndexChoice.Enable(self.IndexChoice.GetCount() != 0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   552
            self.AddButton.Enable(self.IndexChoice.GetCount() != 0)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   553
        if selected == wx.NOT_FOUND or selected >= len(self.ListIndex) or selectedindex != self.ListIndex[selected]:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   554
            self.Table.Empty()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   555
            self.CallbackCheck.SetValue(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   556
            self.CallbackCheck.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   557
            self.Table.ResetView(self.SubindexGrid)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   558
            self.Parent.RefreshStatusBar()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   559
        else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   560
            self.IndexList.SetSelection(selected)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   561
            self.RefreshTable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   562
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   563
    def RefreshTable(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   564
        selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   565
        if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   566
            index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   567
            if index > 0x260 and self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   568
                self.CallbackCheck.Enable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   569
                self.CallbackCheck.SetValue(self.Manager.HasCurrentEntryCallbacks(index))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   570
            result = self.Manager.GetCurrentEntryValues(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   571
            if result != None:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   572
                self.Table.SetCurrentIndex(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   573
                data, editors = result
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   574
                self.Table.SetData(data)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   575
                self.Table.SetEditors(editors)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   576
                self.Table.ResetView(self.SubindexGrid)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   577
        self.Parent.RefreshStatusBar()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   578
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   579
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   580
#                        Editing Table value function
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   581
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   582
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   583
    def OnSubindexGridCellChange(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   584
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   585
            index = self.Table.GetCurrentIndex()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   586
            subIndex = event.GetRow()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   587
            col = event.GetCol()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   588
            name = self.Table.GetColLabelValue(col)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   589
            value = self.Table.GetValue(subIndex, col)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   590
            editor = self.Table.GetEditor(subIndex, col)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   591
            self.Manager.SetCurrentEntry(index, subIndex, value, name, editor)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   592
            self.Parent.RefreshBufferState()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   593
            wx.CallAfter(self.RefreshTable)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   594
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   595
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   596
    def OnCallbackCheck(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   597
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   598
            index = self.Table.GetCurrentIndex()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   599
            self.Manager.SetCurrentEntryCallbacks(index, self.CallbackCheck.GetValue())
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   600
            self.Parent.RefreshBufferState()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   601
            wx.CallAfter(self.RefreshTable)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   602
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   603
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   604
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   605
#                          Contextual Menu functions
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   606
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   607
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   608
    def OnIndexListRightUp(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   609
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   610
            if not self.FirstCall:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   611
                self.FirstCall = True
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   612
                selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   613
                if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   614
                    index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   615
                    if index < 0x260:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   616
                        self.IndexListMenu.FindItemByPosition(0).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   617
                        self.IndexListMenu.FindItemByPosition(1).Enable(True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   618
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   619
                    elif 0x1000 <= index <= 0x1BFF:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   620
                        self.IndexListMenu.FindItemByPosition(0).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   621
                        self.IndexListMenu.FindItemByPosition(1).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   622
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   623
                    elif 0x2000 <= index <= 0x5FFF:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   624
                        self.IndexListMenu.FindItemByPosition(0).Enable(True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   625
                        self.IndexListMenu.FindItemByPosition(1).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   626
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   627
                    elif index >= 0x6000:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   628
                        self.IndexListMenu.FindItemByPosition(0).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   629
                        self.IndexListMenu.FindItemByPosition(1).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   630
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   631
            else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   632
                self.FirstCall = False
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   633
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   634
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   635
    def OnSubindexGridRightClick(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   636
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   637
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   638
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   639
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   640
                if self.Manager.IsCurrentEntry(index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   641
                    infos = self.Manager.GetEntryInfos(index)
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   642
                    if index >= 0x2000 and infos["struct"] & OD_MultipleSubindexes or infos["struct"] & OD_IdenticalSubindexes:
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   643
                        self.PopupMenu(self.SubindexGridMenu)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   644
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   645
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   646
    def OnRenameIndexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   647
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   648
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   649
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   650
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   651
                if self.Manager.IsCurrentEntry(index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   652
                    infos = self.Manager.GetEntryInfos(index)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   653
                    dialog = wx.TextEntryDialog(self, "Give a new name for index 0x%04X"%index,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   654
                                 "Rename an index", infos["name"], wx.OK|wx.CANCEL)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   655
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   656
                        self.Manager.SetCurrentEntryName(index, dialog.GetValue())
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   657
                        self.Parent.RefreshBufferState()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   658
                        self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   659
                    dialog.Destroy()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   660
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   661
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   662
    def OnModifyIndexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   663
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   664
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   665
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   666
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   667
                if self.Manager.IsCurrentEntry(index) and index < 0x260:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   668
                    values, valuetype = self.Manager.GetCustomisedTypeValues(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   669
                    dialog = UserTypeDialog(self)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   670
                    dialog.SetTypeList(self.Manager.GetCustomisableTypes(), values[1])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   671
                    if valuetype == 0:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   672
                        dialog.SetValues(min = values[2], max = values[3])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   673
                    elif valuetype == 1:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   674
                        dialog.SetValues(length = values[2])
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   675
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   676
                        type, min, max, length = dialog.GetValues()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   677
                        self.Manager.SetCurrentUserType(index, type, min, max, length)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   678
                        self.Parent.RefreshBufferState()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   679
                        self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   680
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   681
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   682
    def OnDeleteIndexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   683
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   684
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   685
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   686
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   687
                if self.Manager.IsCurrentEntry(index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   688
                    self.Manager.ManageEntriesOfCurrent([],[index])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   689
                    self.Parent.RefreshBufferState()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   690
                    self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   691
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   692
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   693
    def OnAddSubindexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   694
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   695
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   696
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   697
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   698
                if self.Manager.IsCurrentEntry(index):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   699
                    dialog = wx.TextEntryDialog(self, "Number of subindexes to add:",
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   700
                                 "Add subindexes", "1", wx.OK|wx.CANCEL)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   701
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   702
                        try:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   703
                            number = int(dialog.GetValue())
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   704
                            self.Manager.AddSubentriesToCurrent(index, number)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   705
                            self.Parent.RefreshBufferState()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   706
                            self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   707
                        except:
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   708
                            message = wx.MessageDialog(self, "An integer is required!", "ERROR", wx.OK|wx.ICON_ERROR)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   709
                            message.ShowModal()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   710
                            message.Destroy()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   711
                    dialog.Destroy()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   712
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   713
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   714
    def OnDeleteSubindexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   715
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   716
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   717
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   718
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   719
                if self.Manager.IsCurrentEntry(index):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   720
                    dialog = wx.TextEntryDialog(self, "Number of subindexes to delete:",
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   721
                                 "Delete subindexes", "1", wx.OK|wx.CANCEL)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   722
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   723
                        try:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   724
                            number = int(dialog.GetValue())
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   725
                            self.Manager.RemoveSubentriesFromCurrent(index, number)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   726
                            self.Parent.RefreshBufferState()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   727
                            self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   728
                        except:
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   729
                            message = wx.MessageDialog(self, "An integer is required!", "ERROR", wx.OK|wx.ICON_ERROR)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   730
                            message.ShowModal()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   731
                            message.Destroy()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   732
                    dialog.Destroy()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   733
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   734