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