objdictgen/subindextable.py
author fbeaulier
Tue, 16 Aug 2011 14:15:52 +0200
changeset 663 70fc3603e36f
parent 622 f0935accb93b
child 741 b1a73ddc514b
permissions -rw-r--r--
timers_unix.c : remove sigint and sigterm catch
sdo : Allow multiple servers
The sdo transfer struct is not anymore referenced by server's node id but by
client or server number in the OD. Node id is not relevant in SDO transfert.
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]
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    34
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    35
def GetAccessList(write=True):
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    36
    _ = lambda x : x
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    37
    if write:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    38
        return [_("Read Only"), _("Write Only"), _("Read/Write")]
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    39
    return [_("Read Only"), _("Read/Write")]
584
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
    40
AccessList = ",".join(map(_, GetAccessList()))
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
    41
RAccessList = ",".join(map(_, GetAccessList(False)))
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    42
ACCESS_LIST_DICT = dict([(_(access), access) for access in GetAccessList()])
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    43
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    44
def GetBoolList():
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    45
    _ = lambda x : x
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    46
    return [_("True"), _("False")]
584
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
    47
BoolList = ",".join(map(_, GetBoolList()))
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    48
BOOL_LIST_DICT = dict([(_(bool), bool) for bool in GetBoolList()])
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    49
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    50
def GetOptionList():
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    51
    _ = lambda x : x
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    52
    return [_("Yes"), _("No")]
584
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
    53
OptionList = ",".join(map(_, GetOptionList()))
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    54
OPTION_LIST_DICT = dict([(_(option), option) for option in GetOptionList()])
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    55
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    56
[USER_TYPE, SDO_SERVER, SDO_CLIENT, 
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    57
 PDO_TRANSMIT, PDO_RECEIVE, MAP_VARIABLE] = range(6)
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    58
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    59
INDEXCHOICE_OPTIONS = {
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    60
    USER_TYPE: (_("User Type"), 0, "AddUserType"), 
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    61
    SDO_SERVER: (_("SDO Server"), 1, "AddSDOServerToCurrent"),
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    62
    SDO_CLIENT: (_("SDO Client"), 1, "AddSDOClientToCurrent"),
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    63
    PDO_RECEIVE: (_("PDO Receive"), 1, "AddPDOReceiveToCurrent"),
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    64
    PDO_TRANSMIT: (_("PDO Transmit"), 1, "AddPDOTransmitToCurrent"),
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    65
    MAP_VARIABLE: (_("Map Variable"), 0, "AddMapVariable")
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    66
}
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    67
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    68
INDEXCHOICE_OPTIONS_DICT = dict([(translation, option) for option, (translation, object, function) in INDEXCHOICE_OPTIONS.iteritems()])
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    69
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    70
INDEXCHOICE_SECTIONS = {
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    71
    0 : [USER_TYPE],
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    72
    2 : [SDO_SERVER, SDO_CLIENT],
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    73
    3 : [PDO_RECEIVE],
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    74
    4 : [PDO_RECEIVE],
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    75
    5 : [PDO_TRANSMIT],
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    76
    6 : [PDO_TRANSMIT],
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    77
    8 : [MAP_VARIABLE],
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    78
}
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    79
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    80
def GetSubindexTableColnames():
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    81
    _ = lambda x : x
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
    82
    return [_("subindex"), _("name"), _("type"), _("value"), _("access"), _("save"), _("comment")]
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    83
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    84
DictionaryOrganisation = [
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    85
    {"minIndex" : 0x0001, "maxIndex" : 0x0FFF, "name" : "Data Type Definitions"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    86
    {"minIndex" : 0x1000, "maxIndex" : 0x1029, "name" : "Communication Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    87
    {"minIndex" : 0x1200, "maxIndex" : 0x12FF, "name" : "SDO Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    88
    {"minIndex" : 0x1400, "maxIndex" : 0x15FF, "name" : "Receive PDO Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    89
    {"minIndex" : 0x1600, "maxIndex" : 0x17FF, "name" : "Receive PDO Mapping"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    90
    {"minIndex" : 0x1800, "maxIndex" : 0x19FF, "name" : "Transmit PDO Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    91
    {"minIndex" : 0x1A00, "maxIndex" : 0x1BFF, "name" : "Transmit PDO Mapping"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    92
    {"minIndex" : 0x1C00, "maxIndex" : 0x1FFF, "name" : "Other Communication Parameters"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    93
    {"minIndex" : 0x2000, "maxIndex" : 0x5FFF, "name" : "Manufacturer Specific"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    94
    {"minIndex" : 0x6000, "maxIndex" : 0x9FFF, "name" : "Standardized Device Profile"},
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    95
    {"minIndex" : 0xA000, "maxIndex" : 0xBFFF, "name" : "Standardized Interface Profile"}]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
    96
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
    97
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
    98
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
    99
class SubindexTable(wx.grid.PyGridTableBase):
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   100
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   101
    """
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   102
    A custom wxGrid Table using user supplied data
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   103
    """
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   104
    def __init__(self, parent, data, editors, colnames):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   105
        # The base class must be initialized *first*
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   106
        wx.grid.PyGridTableBase.__init__(self)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   107
        self.data = data
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   108
        self.editors = editors
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   109
        self.CurrentIndex = 0
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   110
        self.colnames = colnames
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   111
        self.Parent = parent
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   112
        self.Editable = True
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   113
        # XXX
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   114
        # we need to store the row length and collength to
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   115
        # see if the table has changed size
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   116
        self._rows = self.GetNumberRows()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   117
        self._cols = self.GetNumberCols()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   118
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   119
    def Disable(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   120
        self.Editable = False
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   121
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   122
    def Enable(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   123
        self.Editable = True
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   124
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   125
    def GetNumberCols(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   126
        return len(self.colnames)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   127
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   128
    def GetNumberRows(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   129
        return len(self.data)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   130
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   131
    def GetColLabelValue(self, col, translate=True):
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   132
        if col < len(self.colnames):
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   133
            if translate:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   134
                return _(self.colnames[col])
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   135
            return self.colnames[col]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   136
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   137
    def GetRowLabelValues(self, row, translate=True):
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   138
        return row
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   139
584
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
   140
    def GetValue(self, row, col, translate=True):
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   141
        if row < self.GetNumberRows():
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   142
            colname = self.GetColLabelValue(col, False)
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   143
            value = unicode(self.data[row].get(colname, ""))
584
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
   144
            if translate and (colname == "access" or 
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
   145
                              self.editors[row][colname] in ["bool", "option"] or
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
   146
                              self.editors[row][colname] == "map" and value == "None"):
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   147
                value = _(value)
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   148
            return value
266
8678a3cf7fe7 Code corrections
lbessard
parents: 254
diff changeset
   149
            
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   150
    def GetEditor(self, row, col):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   151
        if row < self.GetNumberRows():
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   152
            return self.editors[row].get(self.GetColLabelValue(col, False), "")
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   153
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   154
    def GetValueByName(self, row, colname):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   155
        return self.data[row].get(colname)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   156
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   157
    def SetValue(self, row, col, value):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   158
        if col < len(self.colnames):
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   159
            colname = self.GetColLabelValue(col, False)
584
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
   160
            if colname == "access":
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   161
                value = ACCESS_LIST_DICT[value]
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   162
            elif self.editors[row][colname] == "bool":
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   163
                value = BOOL_LIST_DICT[value]
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   164
            elif self.editors[row][colname] == "option":
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   165
                value = OPTION_LIST_DICT[value]
584
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
   166
            elif self.editors[row][colname] == "map" and value == _("None"):
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
   167
                value = "None"
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   168
            self.data[row][colname] = value
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   169
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   170
    def ResetView(self, grid):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   171
        """
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   172
        (wx.grid.Grid) -> Reset the grid view.   Call this to
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   173
        update the grid if rows and columns have been added or deleted
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   174
        """
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   175
        grid.BeginBatch()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   176
        for current, new, delmsg, addmsg in [
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   177
            (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
   178
            (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
   179
        ]:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   180
            if new < current:
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   181
                msg = wx.grid.GridTableMessage(self,delmsg,new,current-new)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   182
                grid.ProcessTableMessage(msg)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   183
            elif new > current:
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   184
                msg = wx.grid.GridTableMessage(self,addmsg,new-current)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   185
                grid.ProcessTableMessage(msg)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   186
                self.UpdateValues(grid)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   187
        grid.EndBatch()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   188
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   189
        self._rows = self.GetNumberRows()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   190
        self._cols = self.GetNumberCols()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   191
        # update the column rendering scheme
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   192
        self._updateColAttrs(grid)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   193
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   194
        # update the scrollbars and the displayed part of the grid
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   195
        grid.AdjustScrollbars()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   196
        grid.ForceRefresh()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   197
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   198
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   199
    def UpdateValues(self, grid):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   200
        """Update all displayed values"""
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   201
        # 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
   202
        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_REQUEST_VIEW_GET_VALUES)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   203
        grid.ProcessTableMessage(msg)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   204
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   205
    def _updateColAttrs(self, grid):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   206
        """
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   207
        wx.grid.Grid -> update the column attributes to add the
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   208
        appropriate renderer given the column name.
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   209
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   210
        Otherwise default to the default renderer.
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   211
        """
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   212
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   213
        for col in range(self.GetNumberCols()):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   214
            attr = wx.grid.GridCellAttr()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   215
            attr.SetAlignment(ColAlignements[col], wx.ALIGN_CENTRE)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   216
            grid.SetColAttr(col, attr)
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   217
            grid.SetColMinimalWidth(col, ColSizes[col])
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   218
            grid.AutoSizeColumn(col, False)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   219
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   220
        typelist = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   221
        maplist = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   222
        for row in range(self.GetNumberRows()):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   223
            editors = self.editors[row]
585
d62424ba12bf Replacing wx.Choice controls by wx.ComboBox controls
laurent
parents: 584
diff changeset
   224
            grid.SetRowMinimalHeight(row, 28)
d62424ba12bf Replacing wx.Choice controls by wx.ComboBox controls
laurent
parents: 584
diff changeset
   225
            grid.AutoSizeRow(row, False)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   226
            for col in range(self.GetNumberCols()):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   227
                editor = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   228
                renderer = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   229
                
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   230
                colname = self.GetColLabelValue(col, False)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   231
                editortype = editors[colname]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   232
                if editortype and self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   233
                    grid.SetReadOnly(row, col, False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   234
                    if editortype == "string":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   235
                        editor = wx.grid.GridCellTextEditor()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   236
                        renderer = wx.grid.GridCellStringRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   237
                        if colname == "value" and "length" in editors:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   238
                            editor.SetParameters(editors["length"]) 
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   239
                    elif editortype == "number":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   240
                        editor = wx.grid.GridCellNumberEditor()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   241
                        renderer = wx.grid.GridCellNumberRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   242
                        if colname == "value" and "min" in editors and "max" in editors:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   243
                            editor.SetParameters("%s,%s"%(editors["min"],editors["max"]))
453
c74a73474cce Problem with Real types unsupported fixed
lbessard
parents: 340
diff changeset
   244
                    elif editortype == "float":
c74a73474cce Problem with Real types unsupported fixed
lbessard
parents: 340
diff changeset
   245
                        editor = wx.grid.GridCellTextEditor()
c74a73474cce Problem with Real types unsupported fixed
lbessard
parents: 340
diff changeset
   246
                        renderer = wx.grid.GridCellStringRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   247
                    elif editortype == "bool":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   248
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   249
                        editor.SetParameters(BoolList)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   250
                    elif editortype == "access":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   251
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   252
                        editor.SetParameters(AccessList)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   253
                    elif editortype == "raccess":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   254
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   255
                        editor.SetParameters(RAccessList)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   256
                    elif editortype == "option":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   257
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   258
                        editor.SetParameters(OptionList)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   259
                    elif editortype == "type":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   260
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   261
                        if typelist == None:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   262
                            typelist = self.Parent.Manager.GetCurrentTypeList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   263
                        editor.SetParameters(typelist)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   264
                    elif editortype == "map":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   265
                        editor = wx.grid.GridCellChoiceEditor()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   266
                        if maplist == None:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   267
                            maplist = self.Parent.Manager.GetCurrentMapList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   268
                        editor.SetParameters(maplist)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   269
                    elif editortype == "time":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   270
                        editor = wx.grid.GridCellTextEditor()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   271
                        renderer = wx.grid.GridCellStringRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   272
                    elif editortype == "domain":
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   273
                        editor = wx.grid.GridCellTextEditor()
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   274
                        renderer = wx.grid.GridCellStringRenderer()
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   275
                    elif editortype == "dcf":
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   276
                        editor = wx.grid.GridCellTextEditor()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   277
                        renderer = wx.grid.GridCellStringRenderer()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   278
                else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   279
                    grid.SetReadOnly(row, col, True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   280
                    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   281
                grid.SetCellEditor(row, col, editor)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   282
                grid.SetCellRenderer(row, col, renderer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   283
                
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   284
                grid.SetCellBackgroundColour(row, col, wx.WHITE)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   285
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   286
    def SetData(self, data):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   287
        self.data = data
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   288
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   289
    def SetEditors(self, editors):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   290
        self.editors = editors
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   291
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   292
    def GetCurrentIndex(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   293
        return self.CurrentIndex
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   294
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   295
    def SetCurrentIndex(self, index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   296
        self.CurrentIndex = index
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   297
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   298
    def AppendRow(self, row_content):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   299
        self.data.append(row_content)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   300
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   301
    def Empty(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   302
        self.data = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   303
        self.editors = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   304
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   305
[ID_EDITINGPANEL, ID_EDITINGPANELADDBUTTON, ID_EDITINGPANELINDEXCHOICE, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   306
 ID_EDITINGPANELINDEXLIST, ID_EDITINGPANELINDEXLISTPANEL, ID_EDITINGPANELPARTLIST, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   307
 ID_EDITINGPANELSECONDSPLITTER, ID_EDITINGPANELSUBINDEXGRID,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   308
 ID_EDITINGPANELSUBINDEXGRIDPANEL, ID_EDITINGPANELCALLBACKCHECK,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   309
] = [wx.NewId() for _init_ctrls in range(10)]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   310
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   311
[ID_EDITINGPANELINDEXLISTMENUITEMS0, ID_EDITINGPANELINDEXLISTMENUITEMS1, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   312
 ID_EDITINGPANELINDEXLISTMENUITEMS2, 
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   313
] = [wx.NewId() for _init_coll_IndexListMenu_Items in range(3)]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   314
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   315
[ID_EDITINGPANELMENU1ITEMS0, ID_EDITINGPANELMENU1ITEMS1, 
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   316
 ID_EDITINGPANELMENU1ITEMS3, ID_EDITINGPANELMENU1ITEMS4, 
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   317
] = [wx.NewId() for _init_coll_SubindexGridMenu_Items in range(4)]
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   318
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   319
class EditingPanel(wx.SplitterWindow):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   320
    def _init_coll_AddToListSizer_Items(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   321
        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
   322
        parent.AddWindow(self.IndexChoice, 0, border=0, flag=wx.GROW)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   323
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   324
    def _init_coll_SubindexGridSizer_Items(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   325
        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
   326
        parent.AddWindow(self.SubindexGrid, 0, border=0, flag=wx.GROW)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   327
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   328
    def _init_coll_IndexListSizer_Items(self, parent):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   329
        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
   330
        parent.AddSizer(self.AddToListSizer, 0, border=0, flag=wx.GROW)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   331
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   332
    def _init_coll_AddToListSizer_Growables(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   333
        parent.AddGrowableCol(1)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   334
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   335
    def _init_coll_SubindexGridSizer_Growables(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   336
        parent.AddGrowableCol(0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   337
        parent.AddGrowableRow(1)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   338
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   339
    def _init_coll_IndexListSizer_Growables(self, parent):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   340
        parent.AddGrowableCol(0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   341
        parent.AddGrowableRow(0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   342
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   343
    def _init_coll_SubindexGridMenu_Items(self, parent):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   344
        parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS0,
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   345
              kind=wx.ITEM_NORMAL, text=_('Add subindexes'))
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   346
        parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS1,
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   347
              kind=wx.ITEM_NORMAL, text=_('Delete subindexes'))
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   348
        parent.AppendSeparator()
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   349
        parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS3,
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   350
              kind=wx.ITEM_NORMAL, text=_('Default value'))
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   351
        if not self.Editable:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   352
            parent.Append(help='', id=ID_EDITINGPANELMENU1ITEMS4,
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   353
                  kind=wx.ITEM_NORMAL, text=_('Add to DCF'))
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   354
        self.Bind(wx.EVT_MENU, self.OnAddSubindexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   355
              id=ID_EDITINGPANELMENU1ITEMS0)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   356
        self.Bind(wx.EVT_MENU, self.OnDeleteSubindexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   357
              id=ID_EDITINGPANELMENU1ITEMS1)
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   358
        self.Bind(wx.EVT_MENU, self.OnDefaultValueSubindexMenu,
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   359
              id=ID_EDITINGPANELMENU1ITEMS3)
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   360
        if not self.Editable:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   361
            self.Bind(wx.EVT_MENU, self.OnAddToDCFSubindexMenu,
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   362
                  id=ID_EDITINGPANELMENU1ITEMS4)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   363
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   364
    def _init_coll_IndexListMenu_Items(self, parent):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   365
        parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS0,
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   366
              kind=wx.ITEM_NORMAL, text=_('Rename'))
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   367
        parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS2,
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   368
              kind=wx.ITEM_NORMAL, text=_('Modify'))
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   369
        parent.Append(help='', id=ID_EDITINGPANELINDEXLISTMENUITEMS1,
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   370
              kind=wx.ITEM_NORMAL, text=_('Delete'))
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   371
        self.Bind(wx.EVT_MENU, self.OnRenameIndexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   372
              id=ID_EDITINGPANELINDEXLISTMENUITEMS0)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   373
        self.Bind(wx.EVT_MENU, self.OnDeleteIndexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   374
              id=ID_EDITINGPANELINDEXLISTMENUITEMS1)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   375
        self.Bind(wx.EVT_MENU, self.OnModifyIndexMenu,
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   376
              id=ID_EDITINGPANELINDEXLISTMENUITEMS2)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   377
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   378
    def _init_utils(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   379
        self.IndexListMenu = wx.Menu(title='')
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   380
        self.SubindexGridMenu = wx.Menu(title='')
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   381
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   382
        self._init_coll_IndexListMenu_Items(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   383
        self._init_coll_SubindexGridMenu_Items(self.SubindexGridMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   384
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   385
    def _init_sizers(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   386
        self.IndexListSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   387
        self.SubindexGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   388
        self.AddToListSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=1, vgap=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   389
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   390
        self._init_coll_IndexListSizer_Growables(self.IndexListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   391
        self._init_coll_IndexListSizer_Items(self.IndexListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   392
        self._init_coll_SubindexGridSizer_Growables(self.SubindexGridSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   393
        self._init_coll_SubindexGridSizer_Items(self.SubindexGridSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   394
        self._init_coll_AddToListSizer_Growables(self.AddToListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   395
        self._init_coll_AddToListSizer_Items(self.AddToListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   396
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   397
        self.SubindexGridPanel.SetSizer(self.SubindexGridSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   398
        self.IndexListPanel.SetSizer(self.IndexListSizer)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   399
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   400
    def _init_ctrls(self, prnt):
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   401
        wx.SplitterWindow.__init__(self, id=ID_EDITINGPANEL,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   402
              name='MainSplitter', parent=prnt, point=wx.Point(0, 0),
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   403
              size=wx.Size(-1, -1), style=wx.SP_3D)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   404
        self._init_utils()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   405
        self.SetNeedUpdating(True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   406
        self.SetMinimumPaneSize(1)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   407
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   408
        self.PartList = wx.ListBox(choices=[], id=ID_EDITINGPANELPARTLIST,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   409
              name='PartList', parent=self, pos=wx.Point(0, 0),
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   410
              size=wx.Size(-1, -1), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   411
        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
   412
              id=ID_EDITINGPANELPARTLIST)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   413
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   414
        self.SecondSplitter = wx.SplitterWindow(id=ID_EDITINGPANELSECONDSPLITTER,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   415
              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
   416
              size=wx.Size(-1, -1), style=wx.SP_3D)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   417
        self.SecondSplitter.SetMinimumPaneSize(1)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   418
        self.SplitHorizontally(self.PartList, self.SecondSplitter,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   419
              110)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   420
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   421
        self.SubindexGridPanel = wx.Panel(id=ID_EDITINGPANELSUBINDEXGRIDPANEL,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   422
              name='SubindexGridPanel', parent=self.SecondSplitter, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   423
              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
   424
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   425
        self.IndexListPanel = wx.Panel(id=ID_EDITINGPANELINDEXLISTPANEL,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   426
              name='IndexListPanel', parent=self.SecondSplitter, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   427
              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
   428
        self.SecondSplitter.SplitVertically(self.IndexListPanel,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   429
              self.SubindexGridPanel, 280)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   430
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   431
        self.SubindexGrid = wx.grid.Grid(id=ID_EDITINGPANELSUBINDEXGRID,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   432
              name='SubindexGrid', parent=self.SubindexGridPanel, pos=wx.Point(0,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   433
              0), size=wx.Size(-1, -1), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   434
        self.SubindexGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   435
              'Sans'))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   436
        self.SubindexGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   437
              False, 'Sans'))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   438
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   439
              self.OnSubindexGridCellChange)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   440
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   441
              self.OnSubindexGridRightClick)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   442
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   443
              self.OnSubindexGridSelectCell)
324
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   444
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, 
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   445
              self.OnSubindexGridCellLeftClick)
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   446
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, 
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   447
              self.OnSubindexGridEditorShown)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   448
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   449
        self.CallbackCheck = wx.CheckBox(id=ID_EDITINGPANELCALLBACKCHECK,
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   450
              label=_('Have Callbacks'), name='CallbackCheck',
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   451
              parent=self.SubindexGridPanel, pos=wx.Point(0, 0), size=wx.Size(152,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   452
              24), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   453
        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
   454
              id=ID_EDITINGPANELCALLBACKCHECK)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   455
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   456
        self.IndexList = wx.ListBox(choices=[], id=ID_EDITINGPANELINDEXLIST,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   457
              name='IndexList', parent=self.IndexListPanel, pos=wx.Point(0, 0),
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   458
              size=wx.Size(-1, -1), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   459
        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
   460
              id=ID_EDITINGPANELINDEXLIST)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   461
        self.IndexList.Bind(wx.EVT_RIGHT_UP, self.OnIndexListRightUp)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   462
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   463
        self.AddButton = wx.Button(id=ID_EDITINGPANELADDBUTTON, label=_('Add'),
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   464
              name='AddButton', parent=self.IndexListPanel, pos=wx.Point(0, 0),
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   465
              size=wx.DefaultSize, style=0)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   466
        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
   467
              id=ID_EDITINGPANELADDBUTTON)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   468
585
d62424ba12bf Replacing wx.Choice controls by wx.ComboBox controls
laurent
parents: 584
diff changeset
   469
        self.IndexChoice = wx.ComboBox(choices=[], id=ID_EDITINGPANELINDEXCHOICE,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   470
              name='IndexChoice', parent=self.IndexListPanel, pos=wx.Point(50,
585
d62424ba12bf Replacing wx.Choice controls by wx.ComboBox controls
laurent
parents: 584
diff changeset
   471
              0), size=wx.Size(-1, 30), style=wx.CB_READONLY)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   472
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   473
        self._init_sizers()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   474
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   475
    def __init__(self, parent, window, manager, editable = True):
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   476
        self.Editable = editable
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   477
        self._init_ctrls(parent)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   478
        self.ParentWindow = window
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   479
        self.Manager = manager
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   480
        self.ListIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   481
        self.ChoiceIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   482
        self.FirstCall = False
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   483
        self.Index = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   484
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   485
        for values in DictionaryOrganisation:
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   486
            text = "   0x%04X-0x%04X      %s"%(values["minIndex"], values["maxIndex"], values["name"])
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   487
            self.PartList.Append(text)
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   488
        self.Table = SubindexTable(self, [], [], GetSubindexTableColnames())
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   489
        self.SubindexGrid.SetTable(self.Table)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   490
        self.SubindexGrid.SetRowLabelSize(0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   491
        self.CallbackCheck.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   492
        self.Table.ResetView(self.SubindexGrid)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   493
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   494
        if not self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   495
            self.AddButton.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   496
            self.IndexChoice.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   497
            self.CallbackCheck.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   498
            self.Table.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   499
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   500
    def GetIndex(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   501
        return self.Index
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   502
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   503
    def SetIndex(self, index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   504
        self.Index = index
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   505
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   506
    def GetSelection(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   507
        selected = self.IndexList.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
            index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   510
            subIndex = self.SubindexGrid.GetGridCursorRow()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   511
            return index, subIndex
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   512
        return None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   513
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   514
    def OnSubindexGridCellLeftClick(self, event):
324
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   515
        if not self.ParentWindow.ModeSolo:
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   516
            col = event.GetCol()
485
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   517
            if self.Editable and col == 0:
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   518
                selected = self.IndexList.GetSelection()
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   519
                if selected != wx.NOT_FOUND:
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   520
                    index = self.ListIndex[selected]
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   521
                    subindex = event.GetRow()
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   522
                    entry_infos = self.Manager.GetEntryInfos(index)
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   523
                    if not entry_infos["struct"] & OD_MultipleSubindexes or subindex != 0:
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   524
                        subentry_infos = self.Manager.GetSubentryInfos(index, subindex)
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   525
                        typeinfos = self.Manager.GetEntryInfos(subentry_infos["type"])
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   526
                        if typeinfos:
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   527
                            bus_id = '.'.join(map(str, self.ParentWindow.GetBusId()))
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   528
                            size = typeinfos["size"]
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   529
                            data = wx.TextDataObject(str(("%s%s.%d.%d"%(SizeConversion[size], bus_id, index, subindex), "location")))
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   530
                            dragSource = wx.DropSource(self.SubindexGrid)
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   531
                            dragSource.SetData(data)
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   532
                            dragSource.DoDragDrop()
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   533
            elif col == 0:
324
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   534
                selected = self.IndexList.GetSelection()
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   535
                if selected != wx.NOT_FOUND:
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   536
                    index = self.ListIndex[selected]
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   537
                    subindex = event.GetRow()
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   538
                    entry_infos = self.Manager.GetEntryInfos(index)
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   539
                    if not entry_infos["struct"] & OD_MultipleSubindexes or subindex != 0:
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   540
                        subentry_infos = self.Manager.GetSubentryInfos(index, subindex)
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   541
                        typeinfos = self.Manager.GetEntryInfos(subentry_infos["type"])
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   542
                        if subentry_infos["pdo"] and typeinfos:
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   543
                            bus_id = '.'.join(map(str, self.ParentWindow.GetBusId()))
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   544
                            node_id = self.ParentWindow.GetCurrentNodeId()
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   545
                            size = typeinfos["size"]
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   546
                            data = wx.TextDataObject(str(("%s%s.%d.%d.%d"%(SizeConversion[size], bus_id, node_id, index, subindex), "location")))
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   547
                            dragSource = wx.DropSource(self.SubindexGrid)
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   548
                            dragSource.SetData(data)
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   549
                            dragSource.DoDragDrop()
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   550
        event.Skip()
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   551
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   552
    def OnAddButtonClick(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   553
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   554
            self.SubindexGrid.SetGridCursor(0, 0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   555
            selected = self.IndexChoice.GetStringSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   556
            if selected != "":
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   557
                choice = INDEXCHOICE_OPTIONS_DICT.get(selected, None)
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   558
                if choice is not None:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   559
                    if INDEXCHOICE_OPTIONS[choice][1] == 0:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   560
                        getattr(self.ParentWindow, INDEXCHOICE_OPTIONS[choice][2])()
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   561
                    elif INDEXCHOICE_OPTIONS[choice][1] == 1:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   562
                        getattr(self.Manager, INDEXCHOICE_OPTIONS[choice][2])()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   563
                elif selected in [menu for menu, indexes in self.Manager.GetCurrentSpecificMenu()]:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   564
                    self.Manager.AddSpecificEntryToCurrent(selected)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   565
                else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   566
                    index = self.ChoiceIndex[self.IndexChoice.GetSelection()]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   567
                    self.Manager.ManageEntriesOfCurrent([index], [])
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   568
                self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   569
                self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   570
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   571
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   572
    def OnPartListBoxClick(self, event):
491
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   573
        if not self.ParentWindow.IsClosing():
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   574
            self.SubindexGrid.SetGridCursor(0, 0)
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   575
            self.RefreshIndexList()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   576
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   577
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   578
    def OnIndexListClick(self, event):
491
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   579
        if not self.ParentWindow.IsClosing():
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   580
            self.SubindexGrid.SetGridCursor(0, 0)
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   581
            self.RefreshTable()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   582
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   583
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   584
    def OnSubindexGridSelectCell(self, event):
491
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   585
        if not self.ParentWindow.IsClosing():
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   586
            wx.CallAfter(self.ParentWindow.RefreshStatusBar)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   587
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   588
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   589
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   590
#                             Refresh Functions
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   591
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   592
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   593
    def RefreshIndexList(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   594
        selected = self.IndexList.GetSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   595
        choice = self.IndexChoice.GetStringSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   596
        choiceindex = self.IndexChoice.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   597
        if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   598
            selectedindex = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   599
        self.IndexList.Clear()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   600
        self.IndexChoice.Clear()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   601
        i = self.PartList.GetSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   602
        if i < len(DictionaryOrganisation):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   603
            values = DictionaryOrganisation[i]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   604
            self.ListIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   605
            for name, index in self.Manager.GetCurrentValidIndexes(values["minIndex"], values["maxIndex"]):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   606
                self.IndexList.Append("0x%04X   %s"%(index, name))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   607
                self.ListIndex.append(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   608
            if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   609
                self.ChoiceIndex = []
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   610
                choices = INDEXCHOICE_SECTIONS.get(i, None)
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   611
                if choices is not None:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   612
                    for c in choices:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   613
                        self.IndexChoice.Append(INDEXCHOICE_OPTIONS[c][0])
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   614
                    if len(choices) > 1:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   615
                        if choiceindex != wx.NOT_FOUND and choice == self.IndexChoice.GetString(choiceindex):
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   616
                            self.IndexChoice.SetStringSelection(choice)
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   617
                    else:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   618
                        self.IndexChoice.SetSelection(0)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   619
                else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   620
                    for name, index in self.Manager.GetCurrentValidChoices(values["minIndex"], values["maxIndex"]):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   621
                        if index:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   622
                            self.IndexChoice.Append("0x%04X   %s"%(index, name))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   623
                        else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   624
                            self.IndexChoice.Append(name)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   625
                        self.ChoiceIndex.append(index)
312
70f96abd8ecd Bug on RefreshList in subindextable.py fixed
lbessard
parents: 310
diff changeset
   626
                if choiceindex != wx.NOT_FOUND and choiceindex < self.IndexChoice.GetCount() and choice == self.IndexChoice.GetString(choiceindex):
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   627
                    self.IndexChoice.SetStringSelection(choice)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   628
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   629
            self.IndexChoice.Enable(self.IndexChoice.GetCount() != 0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   630
            self.AddButton.Enable(self.IndexChoice.GetCount() != 0)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   631
        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
   632
            self.Table.Empty()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   633
            self.CallbackCheck.SetValue(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   634
            self.CallbackCheck.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   635
            self.Table.ResetView(self.SubindexGrid)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   636
            self.ParentWindow.RefreshStatusBar()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   637
        else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   638
            self.IndexList.SetSelection(selected)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   639
            self.RefreshTable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   640
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   641
    def RefreshTable(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   642
        selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   643
        if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   644
            index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   645
            if index > 0x260 and self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   646
                self.CallbackCheck.Enable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   647
                self.CallbackCheck.SetValue(self.Manager.HasCurrentEntryCallbacks(index))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   648
            result = self.Manager.GetCurrentEntryValues(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   649
            if result != None:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   650
                self.Table.SetCurrentIndex(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   651
                data, editors = result
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   652
                self.Table.SetData(data)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   653
                self.Table.SetEditors(editors)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   654
                self.Table.ResetView(self.SubindexGrid)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   655
        self.ParentWindow.RefreshStatusBar()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   656
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   657
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   658
#                        Editing Table value function
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   659
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   660
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   661
    def OnSubindexGridEditorShown(self, event):
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   662
        row, col = event.GetRow(), event.GetCol() 
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   663
        if self.Table.GetEditor(row, col) == "dcf":
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   664
            wx.CallAfter(self.ShowDCFEntryDialog, row, col)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   665
            event.Veto()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   666
        else:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   667
            event.Skip()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   668
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   669
    def ShowDCFEntryDialog(self, row, col):
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   670
        if self.Editable:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   671
            selected = self.IndexList.GetSelection()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   672
            if selected != wx.NOT_FOUND:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   673
                index = self.ListIndex[selected]
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   674
                if self.Manager.IsCurrentEntry(index):
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   675
                    dialog = DCFEntryValuesDialog(self)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   676
                    dialog.SetValues(self.Table.GetValue(row, col).decode("hex_codec"))
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   677
                    if dialog.ShowModal() == wx.ID_OK:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   678
                        value = dialog.GetValues()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   679
                        self.Manager.SetCurrentEntry(index, row, value, "value", "dcf")
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   680
                        self.ParentWindow.RefreshBufferState()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   681
                        wx.CallAfter(self.RefreshTable)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   682
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   683
    def OnSubindexGridCellChange(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   684
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   685
            index = self.Table.GetCurrentIndex()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   686
            subIndex = event.GetRow()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   687
            col = event.GetCol()
584
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
   688
            name = self.Table.GetColLabelValue(col, False)
e23359f62023 Bug with in access value translation and modification on subindex 0 of PDOmapping entries fixed
laurent
parents: 580
diff changeset
   689
            value = self.Table.GetValue(subIndex, col, False)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   690
            editor = self.Table.GetEditor(subIndex, col)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   691
            self.Manager.SetCurrentEntry(index, subIndex, value, name, editor)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   692
            self.ParentWindow.RefreshBufferState()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   693
            wx.CallAfter(self.RefreshTable)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   694
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   695
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   696
    def OnCallbackCheck(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   697
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   698
            index = self.Table.GetCurrentIndex()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   699
            self.Manager.SetCurrentEntryCallbacks(index, self.CallbackCheck.GetValue())
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   700
            self.ParentWindow.RefreshBufferState()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   701
            wx.CallAfter(self.RefreshTable)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   702
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   703
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   704
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   705
#                          Contextual Menu functions
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   706
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   707
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   708
    def OnIndexListRightUp(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   709
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   710
            if not self.FirstCall:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   711
                self.FirstCall = True
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   712
                selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   713
                if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   714
                    index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   715
                    if index < 0x260:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   716
                        self.IndexListMenu.FindItemByPosition(0).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   717
                        self.IndexListMenu.FindItemByPosition(1).Enable(True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   718
                        self.PopupMenu(self.IndexListMenu)
273
58b39f97e352 Some bugs fixed
lbessard
parents: 271
diff changeset
   719
                    elif 0x1000 <= index <= 0x1FFF:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   720
                        self.IndexListMenu.FindItemByPosition(0).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   721
                        self.IndexListMenu.FindItemByPosition(1).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   722
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   723
                    elif 0x2000 <= index <= 0x5FFF:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   724
                        self.IndexListMenu.FindItemByPosition(0).Enable(True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   725
                        self.IndexListMenu.FindItemByPosition(1).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   726
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   727
                    elif index >= 0x6000:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   728
                        self.IndexListMenu.FindItemByPosition(0).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   729
                        self.IndexListMenu.FindItemByPosition(1).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   730
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   731
            else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   732
                self.FirstCall = False
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   733
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   734
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   735
    def OnSubindexGridRightClick(self, event):
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   736
        self.SubindexGrid.SetGridCursor(event.GetRow(), event.GetCol())
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   737
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   738
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   739
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   740
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   741
                if self.Manager.IsCurrentEntry(index):
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   742
                    showpopup = False
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   743
                    infos = self.Manager.GetEntryInfos(index)
310
1975e546178b Bugs on EDS import fixed
lbessard
parents: 299
diff changeset
   744
                    if 0x2000 <= index <= 0x5FFF and infos["struct"] & OD_MultipleSubindexes or infos["struct"] & OD_IdenticalSubindexes:
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   745
                        showpopup = True
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   746
                        self.SubindexGridMenu.FindItemByPosition(0).Enable(True)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   747
                        self.SubindexGridMenu.FindItemByPosition(1).Enable(True)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   748
                    else:
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   749
                        self.SubindexGridMenu.FindItemByPosition(0).Enable(False)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   750
                        self.SubindexGridMenu.FindItemByPosition(1).Enable(False)
622
f0935accb93b Bug in Subindex grid right click with i18n fixed
laurent
parents: 608
diff changeset
   751
                    if self.Table.GetColLabelValue(event.GetCol(), False) == "value":
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   752
                        showpopup = True
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   753
                        self.SubindexGridMenu.FindItemByPosition(3).Enable(True)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   754
                    else:
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   755
                        self.SubindexGridMenu.FindItemByPosition(3).Enable(False)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   756
                    if showpopup:
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   757
                        self.PopupMenu(self.SubindexGridMenu)
622
f0935accb93b Bug in Subindex grid right click with i18n fixed
laurent
parents: 608
diff changeset
   758
        elif self.Table.GetColLabelValue(event.GetCol(), False) == "value":
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   759
            selected = self.IndexList.GetSelection()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   760
            if selected != wx.NOT_FOUND:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   761
                index = self.ListIndex[selected]
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   762
                if self.Manager.IsCurrentEntry(index):
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   763
                    infos = self.Manager.GetEntryInfos(index)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   764
                    if not infos["struct"] & OD_MultipleSubindexes or event.GetRow() > 0:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   765
                        self.SubindexGridMenu.FindItemByPosition(0).Enable(False)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   766
                        self.SubindexGridMenu.FindItemByPosition(1).Enable(False)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   767
                        self.SubindexGridMenu.FindItemByPosition(3).Enable(False)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   768
                        self.SubindexGridMenu.FindItemByPosition(4).Enable(True)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   769
                        self.PopupMenu(self.SubindexGridMenu)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   770
        event.Skip()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   771
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   772
    def OnAddToDCFSubindexMenu(self, event):
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   773
        if not self.Editable:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   774
            selected = self.IndexList.GetSelection()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   775
            if selected != wx.NOT_FOUND:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   776
                index = self.ListIndex[selected]
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   777
                subindex = self.SubindexGrid.GetGridCursorRow()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   778
                entry_infos = self.Manager.GetEntryInfos(index)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   779
                if not entry_infos["struct"] & OD_MultipleSubindexes or subindex != 0:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   780
                    subentry_infos = self.Manager.GetSubentryInfos(index, subindex)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   781
                    typeinfos = self.Manager.GetEntryInfos(subentry_infos["type"])
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   782
                    if typeinfos:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   783
                        node_id = self.ParentWindow.GetCurrentNodeId()
336
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   784
                        value = self.Table.GetValueByName(subindex, "value")
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   785
                        if value == "True":
340
60e1eb89455e Bug on new DCF entry boolean value fixed
lbessard
parents: 336
diff changeset
   786
                            value = 1
60e1eb89455e Bug on new DCF entry boolean value fixed
lbessard
parents: 336
diff changeset
   787
                        elif value == "False":
336
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   788
                            value = 0
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   789
                        elif value.isdigit():
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   790
                            value = int(value)
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   791
                        elif value.startswith("0x"):
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   792
                            value = int(value, 16)
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   793
                        else:
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   794
                            value = int(value.encode("hex_codec"), 16)
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   795
                        self.Manager.AddToMasterDCF(node_id, index, subindex, max(1, typeinfos["size"] / 8), value)    
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   796
                        self.ParentWindow.OpenMasterDCFDialog(node_id)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   797
336
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   798
    def OpenDCFDialog(self, node_id):
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   799
        self.PartList.SetSelection(7)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   800
        self.RefreshIndexList()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   801
        self.IndexList.SetSelection(self.ListIndex.index(0x1F22))
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   802
        self.RefreshTable()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   803
        self.SubindexGrid.SetGridCursor(node_id, 3)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   804
        self.ShowDCFEntryDialog(node_id, 3)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   805
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   806
    def OnRenameIndexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   807
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   808
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   809
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   810
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   811
                if self.Manager.IsCurrentEntry(index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   812
                    infos = self.Manager.GetEntryInfos(index)
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   813
                    dialog = wx.TextEntryDialog(self, _("Give a new name for index 0x%04X")%index,
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   814
                                 _("Rename an index"), infos["name"], wx.OK|wx.CANCEL)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   815
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   816
                        self.Manager.SetCurrentEntryName(index, dialog.GetValue())
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   817
                        self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   818
                        self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   819
                    dialog.Destroy()
608
daa1e1c3fba4 Removing superfluous event.Skip()
laurent
parents: 585
diff changeset
   820
        
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   821
    def OnModifyIndexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   822
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   823
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   824
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   825
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   826
                if self.Manager.IsCurrentEntry(index) and index < 0x260:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   827
                    values, valuetype = self.Manager.GetCustomisedTypeValues(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   828
                    dialog = UserTypeDialog(self)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   829
                    dialog.SetTypeList(self.Manager.GetCustomisableTypes(), values[1])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   830
                    if valuetype == 0:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   831
                        dialog.SetValues(min = values[2], max = values[3])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   832
                    elif valuetype == 1:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   833
                        dialog.SetValues(length = values[2])
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   834
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   835
                        type, min, max, length = dialog.GetValues()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   836
                        self.Manager.SetCurrentUserType(index, type, min, max, length)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   837
                        self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   838
                        self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   839
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   840
    def OnDeleteIndexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   841
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   842
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   843
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   844
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   845
                if self.Manager.IsCurrentEntry(index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   846
                    self.Manager.ManageEntriesOfCurrent([],[index])
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   847
                    self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   848
                    self.RefreshIndexList()
608
daa1e1c3fba4 Removing superfluous event.Skip()
laurent
parents: 585
diff changeset
   849
        
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   850
    def OnAddSubindexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   851
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   852
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   853
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   854
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   855
                if self.Manager.IsCurrentEntry(index):
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   856
                    dialog = wx.TextEntryDialog(self, _("Number of subindexes to add:"),
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   857
                                 _("Add subindexes"), "1", wx.OK|wx.CANCEL)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   858
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   859
                        try:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   860
                            number = int(dialog.GetValue())
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   861
                            self.Manager.AddSubentriesToCurrent(index, number)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   862
                            self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   863
                            self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   864
                        except:
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   865
                            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
   866
                            message.ShowModal()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   867
                            message.Destroy()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   868
                    dialog.Destroy()
608
daa1e1c3fba4 Removing superfluous event.Skip()
laurent
parents: 585
diff changeset
   869
        
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   870
    def OnDeleteSubindexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   871
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   872
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   873
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   874
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   875
                if self.Manager.IsCurrentEntry(index):
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   876
                    dialog = wx.TextEntryDialog(self, _("Number of subindexes to delete:"),
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   877
                                 _("Delete subindexes"), "1", wx.OK|wx.CANCEL)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   878
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   879
                        try:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   880
                            number = int(dialog.GetValue())
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   881
                            self.Manager.RemoveSubentriesFromCurrent(index, number)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   882
                            self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   883
                            self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   884
                        except:
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   885
                            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
   886
                            message.ShowModal()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   887
                            message.Destroy()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   888
                    dialog.Destroy()
608
daa1e1c3fba4 Removing superfluous event.Skip()
laurent
parents: 585
diff changeset
   889
        
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   890
    def OnDefaultValueSubindexMenu(self, event):
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   891
        if self.Editable:
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   892
            selected = self.IndexList.GetSelection()
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   893
            if selected != wx.NOT_FOUND:
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   894
                index = self.ListIndex[selected]
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   895
                if self.Manager.IsCurrentEntry(index):
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   896
                    row = self.SubindexGrid.GetGridCursorRow()
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   897
                    self.Manager.SetCurrentEntryToDefault(index, row)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   898
                    self.ParentWindow.RefreshBufferState()
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   899
                    self.RefreshIndexList()
608
daa1e1c3fba4 Removing superfluous event.Skip()
laurent
parents: 585
diff changeset
   900