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