objdictgen/subindextable.py
author Edouard Tisserant
Mon, 23 Apr 2018 12:32:03 +0200
changeset 805 570e3a444023
parent 789 a82d867e7850
permissions -rw-r--r--
Workaround Alchemy task not beeing waken up when closing file descriptor it is waiting on, sequel of Xenomai3 all posix file ops
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()
757
8150518de469 Fix bug when using not editable EditingPanel for displaying nodelist generated master
Laurent Bessard
parents: 748
diff changeset
   433
        
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   434
        self.PartList = wx.ListBox(choices=[], id=ID_EDITINGPANELPARTLIST,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   435
              name='PartList', parent=self, pos=wx.Point(0, 0),
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   436
              size=wx.Size(-1, -1), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   437
        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
   438
              id=ID_EDITINGPANELPARTLIST)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   439
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   440
        self.SecondSplitter = wx.SplitterWindow(id=ID_EDITINGPANELSECONDSPLITTER,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   441
              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
   442
              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
   443
        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
   444
        self.SetMinimumPaneSize(1)
8150518de469 Fix bug when using not editable EditingPanel for displaying nodelist generated master
Laurent Bessard
parents: 748
diff changeset
   445
        
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   446
        self.SubindexGridPanel = wx.Panel(id=ID_EDITINGPANELSUBINDEXGRIDPANEL,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   447
              name='SubindexGridPanel', parent=self.SecondSplitter, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   448
              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
   449
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   450
        self.IndexListPanel = wx.Panel(id=ID_EDITINGPANELINDEXLISTPANEL,
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   451
              name='IndexListPanel', parent=self.SecondSplitter, 
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   452
              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
   453
        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
   454
        self.SecondSplitter.SetMinimumPaneSize(1)
8150518de469 Fix bug when using not editable EditingPanel for displaying nodelist generated master
Laurent Bessard
parents: 748
diff changeset
   455
        
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   456
        self.SubindexGrid = wx.grid.Grid(id=ID_EDITINGPANELSUBINDEXGRID,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   457
              name='SubindexGrid', parent=self.SubindexGridPanel, pos=wx.Point(0,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   458
              0), size=wx.Size(-1, -1), style=0)
789
a82d867e7850 WxPython 2.9 support fix by J?rg H?bler
Edouard Tisserant
parents: 785
diff changeset
   459
        self.SubindexGrid.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   460
              'Sans'))
789
a82d867e7850 WxPython 2.9 support fix by J?rg H?bler
Edouard Tisserant
parents: 785
diff changeset
   461
        self.SubindexGrid.SetLabelFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   462
              False, 'Sans'))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   463
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   464
              self.OnSubindexGridCellChange)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   465
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   466
              self.OnSubindexGridRightClick)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   467
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   468
              self.OnSubindexGridSelectCell)
324
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   469
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, 
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   470
              self.OnSubindexGridCellLeftClick)
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   471
        self.SubindexGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, 
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   472
              self.OnSubindexGridEditorShown)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   473
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   474
        self.CallbackCheck = wx.CheckBox(id=ID_EDITINGPANELCALLBACKCHECK,
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   475
              label=_('Have Callbacks'), name='CallbackCheck',
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   476
              parent=self.SubindexGridPanel, pos=wx.Point(0, 0), size=wx.Size(152,
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   477
              24), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   478
        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
   479
              id=ID_EDITINGPANELCALLBACKCHECK)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   480
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   481
        self.IndexList = wx.ListBox(choices=[], id=ID_EDITINGPANELINDEXLIST,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   482
              name='IndexList', parent=self.IndexListPanel, pos=wx.Point(0, 0),
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   483
              size=wx.Size(-1, -1), style=0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   484
        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
   485
              id=ID_EDITINGPANELINDEXLIST)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   486
        self.IndexList.Bind(wx.EVT_RIGHT_UP, self.OnIndexListRightUp)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   487
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   488
        self.AddButton = wx.Button(id=ID_EDITINGPANELADDBUTTON, label=_('Add'),
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   489
              name='AddButton', parent=self.IndexListPanel, pos=wx.Point(0, 0),
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   490
              size=wx.DefaultSize, style=0)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   491
        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
   492
              id=ID_EDITINGPANELADDBUTTON)
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   493
585
d62424ba12bf Replacing wx.Choice controls by wx.ComboBox controls
laurent
parents: 584
diff changeset
   494
        self.IndexChoice = wx.ComboBox(choices=[], id=ID_EDITINGPANELINDEXCHOICE,
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   495
              name='IndexChoice', parent=self.IndexListPanel, pos=wx.Point(50,
585
d62424ba12bf Replacing wx.Choice controls by wx.ComboBox controls
laurent
parents: 584
diff changeset
   496
              0), size=wx.Size(-1, 30), style=wx.CB_READONLY)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   497
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   498
        self._init_sizers()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   499
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   500
    def __init__(self, parent, window, manager, editable = True):
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   501
        self.Editable = editable
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   502
        self._init_ctrls(parent)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   503
        self.ParentWindow = window
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   504
        self.Manager = manager
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   505
        self.ListIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   506
        self.ChoiceIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   507
        self.FirstCall = False
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   508
        self.Index = None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   509
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   510
        for values in DictionaryOrganisation:
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   511
            text = "   0x%04X-0x%04X      %s"%(values["minIndex"], values["maxIndex"], values["name"])
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   512
            self.PartList.Append(text)
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   513
        self.Table = SubindexTable(self, [], [], GetSubindexTableColnames())
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   514
        self.SubindexGrid.SetTable(self.Table)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   515
        self.SubindexGrid.SetRowLabelSize(0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   516
        self.CallbackCheck.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   517
        self.Table.ResetView(self.SubindexGrid)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   518
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   519
        if not self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   520
            self.AddButton.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   521
            self.IndexChoice.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   522
            self.CallbackCheck.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   523
            self.Table.Disable()
785
b72a88dbc7c3 Fixed SplitterWindows sash position at creation when subindextable is used in notebook tab
Laurent Bessard
parents: 782
diff changeset
   524
            
b72a88dbc7c3 Fixed SplitterWindows sash position at creation when subindextable is used in notebook tab
Laurent Bessard
parents: 782
diff changeset
   525
        wx.CallAfter(self.SetSashPosition, 110)
b72a88dbc7c3 Fixed SplitterWindows sash position at creation when subindextable is used in notebook tab
Laurent Bessard
parents: 782
diff changeset
   526
        wx.CallAfter(self.SecondSplitter.SetSashPosition, 280)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   527
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   528
    def GetIndex(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   529
        return self.Index
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   530
    
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   531
    def SetIndex(self, index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   532
        self.Index = index
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   533
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   534
    def GetSelection(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   535
        selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   536
        if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   537
            index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   538
            subIndex = self.SubindexGrid.GetGridCursorRow()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   539
            return index, subIndex
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   540
        return None
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   541
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   542
    def OnSubindexGridCellLeftClick(self, event):
324
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   543
        if not self.ParentWindow.ModeSolo:
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   544
            col = event.GetCol()
485
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   545
            if self.Editable and col == 0:
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   546
                selected = self.IndexList.GetSelection()
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   547
                if selected != wx.NOT_FOUND:
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   548
                    index = self.ListIndex[selected]
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   549
                    subindex = event.GetRow()
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   550
                    entry_infos = self.Manager.GetEntryInfos(index)
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   551
                    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
   552
                        subentry_infos = self.Manager.GetSubentryInfos(index, subindex)
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   553
                        typeinfos = self.Manager.GetEntryInfos(subentry_infos["type"])
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   554
                        if typeinfos:
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   555
                            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
   556
                            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
   557
                            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
   558
                            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
   559
                                ("%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
   560
                                 "location", 
4725d8f909ff Adding support for translating CANOpen type to corresponding IEC type for location drag'n drop
Laurent Bessard
parents: 741
diff changeset
   561
                                 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
   562
                                 var_name, "")))
485
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   563
                            dragSource = wx.DropSource(self.SubindexGrid)
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   564
                            dragSource.SetData(data)
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   565
                            dragSource.DoDragDrop()
761
efff55931763 Fix bug when Drag'n Dropping located variables on Windows
Laurent Bessard
parents: 757
diff changeset
   566
                            return
485
24b506ea314b Added embedded mode in objdictedit, for integration in Beremiz.
etisserant
parents: 453
diff changeset
   567
            elif col == 0:
324
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   568
                selected = self.IndexList.GetSelection()
757
8150518de469 Fix bug when using not editable EditingPanel for displaying nodelist generated master
Laurent Bessard
parents: 748
diff changeset
   569
                node_id = self.ParentWindow.GetCurrentNodeId()
8150518de469 Fix bug when using not editable EditingPanel for displaying nodelist generated master
Laurent Bessard
parents: 748
diff changeset
   570
                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
   571
                    index = self.ListIndex[selected]
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   572
                    subindex = event.GetRow()
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   573
                    entry_infos = self.Manager.GetEntryInfos(index)
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   574
                    if not entry_infos["struct"] & OD_MultipleSubindexes or subindex != 0:
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   575
                        subentry_infos = self.Manager.GetSubentryInfos(index, subindex)
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   576
                        typeinfos = self.Manager.GetEntryInfos(subentry_infos["type"])
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   577
                        if subentry_infos["pdo"] and typeinfos:
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   578
                            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
   579
                            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
   580
                            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
   581
                            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
   582
                                ("%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
   583
                                 "location", 
4725d8f909ff Adding support for translating CANOpen type to corresponding IEC type for location drag'n drop
Laurent Bessard
parents: 741
diff changeset
   584
                                 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
   585
                                 var_name, "")))
324
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   586
                            dragSource = wx.DropSource(self.SubindexGrid)
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   587
                            dragSource.SetData(data)
c6865f99747a Bug with Drag and Drop on SubindexGrid fixed
lbessard
parents: 312
diff changeset
   588
                            dragSource.DoDragDrop()
761
efff55931763 Fix bug when Drag'n Dropping located variables on Windows
Laurent Bessard
parents: 757
diff changeset
   589
                            return
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   590
        event.Skip()
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   591
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   592
    def OnAddButtonClick(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   593
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   594
            self.SubindexGrid.SetGridCursor(0, 0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   595
            selected = self.IndexChoice.GetStringSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   596
            if selected != "":
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   597
                choice = INDEXCHOICE_OPTIONS_DICT.get(selected, None)
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   598
                if choice is not None:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   599
                    if INDEXCHOICE_OPTIONS[choice][1] == 0:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   600
                        getattr(self.ParentWindow, INDEXCHOICE_OPTIONS[choice][2])()
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   601
                    elif INDEXCHOICE_OPTIONS[choice][1] == 1:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   602
                        getattr(self.Manager, INDEXCHOICE_OPTIONS[choice][2])()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   603
                elif selected in [menu for menu, indexes in self.Manager.GetCurrentSpecificMenu()]:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   604
                    self.Manager.AddSpecificEntryToCurrent(selected)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   605
                else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   606
                    index = self.ChoiceIndex[self.IndexChoice.GetSelection()]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   607
                    self.Manager.ManageEntriesOfCurrent([index], [])
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   608
                self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   609
                self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   610
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   611
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   612
    def OnPartListBoxClick(self, event):
491
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   613
        if not self.ParentWindow.IsClosing():
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   614
            self.SubindexGrid.SetGridCursor(0, 0)
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   615
            self.RefreshIndexList()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   616
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   617
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   618
    def OnIndexListClick(self, event):
491
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   619
        if not self.ParentWindow.IsClosing():
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   620
            self.SubindexGrid.SetGridCursor(0, 0)
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   621
            self.RefreshTable()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   622
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   623
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   624
    def OnSubindexGridSelectCell(self, event):
491
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   625
        if not self.ParentWindow.IsClosing():
2ad3dedf6c6a Segmentation Fault on closing fixed
lbessard
parents: 485
diff changeset
   626
            wx.CallAfter(self.ParentWindow.RefreshStatusBar)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   627
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   628
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   629
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   630
#                             Refresh Functions
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   631
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   632
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   633
    def RefreshIndexList(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   634
        selected = self.IndexList.GetSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   635
        choice = self.IndexChoice.GetStringSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   636
        choiceindex = self.IndexChoice.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   637
        if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   638
            selectedindex = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   639
        self.IndexList.Clear()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   640
        self.IndexChoice.Clear()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   641
        i = self.PartList.GetSelection()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   642
        if i < len(DictionaryOrganisation):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   643
            values = DictionaryOrganisation[i]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   644
            self.ListIndex = []
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   645
            for name, index in self.Manager.GetCurrentValidIndexes(values["minIndex"], values["maxIndex"]):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   646
                self.IndexList.Append("0x%04X   %s"%(index, name))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   647
                self.ListIndex.append(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   648
            if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   649
                self.ChoiceIndex = []
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   650
                choices = INDEXCHOICE_SECTIONS.get(i, None)
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   651
                if choices is not None:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   652
                    for c in choices:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   653
                        self.IndexChoice.Append(INDEXCHOICE_OPTIONS[c][0])
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   654
                    if len(choices) > 1:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   655
                        if choiceindex != wx.NOT_FOUND and choice == self.IndexChoice.GetString(choiceindex):
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   656
                            self.IndexChoice.SetStringSelection(choice)
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   657
                    else:
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   658
                        self.IndexChoice.SetSelection(0)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   659
                else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   660
                    for name, index in self.Manager.GetCurrentValidChoices(values["minIndex"], values["maxIndex"]):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   661
                        if index:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   662
                            self.IndexChoice.Append("0x%04X   %s"%(index, name))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   663
                        else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   664
                            self.IndexChoice.Append(name)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   665
                        self.ChoiceIndex.append(index)
312
70f96abd8ecd Bug on RefreshList in subindextable.py fixed
lbessard
parents: 310
diff changeset
   666
                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
   667
                    self.IndexChoice.SetStringSelection(choice)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   668
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   669
            self.IndexChoice.Enable(self.IndexChoice.GetCount() != 0)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   670
            self.AddButton.Enable(self.IndexChoice.GetCount() != 0)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   671
        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
   672
            self.Table.Empty()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   673
            self.CallbackCheck.SetValue(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   674
            self.CallbackCheck.Disable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   675
            self.Table.ResetView(self.SubindexGrid)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   676
            self.ParentWindow.RefreshStatusBar()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   677
        else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   678
            self.IndexList.SetSelection(selected)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   679
            self.RefreshTable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   680
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   681
    def RefreshTable(self):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   682
        selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   683
        if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   684
            index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   685
            if index > 0x260 and self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   686
                self.CallbackCheck.Enable()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   687
                self.CallbackCheck.SetValue(self.Manager.HasCurrentEntryCallbacks(index))
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   688
            result = self.Manager.GetCurrentEntryValues(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   689
            if result != None:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   690
                self.Table.SetCurrentIndex(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   691
                data, editors = result
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   692
                self.Table.SetData(data)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   693
                self.Table.SetEditors(editors)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   694
                self.Table.ResetView(self.SubindexGrid)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   695
        self.ParentWindow.RefreshStatusBar()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   696
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   697
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   698
#                        Editing Table value function
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   699
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   700
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   701
    def OnSubindexGridEditorShown(self, event):
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   702
        row, col = event.GetRow(), event.GetCol() 
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   703
        if self.Table.GetEditor(row, col) == "dcf":
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   704
            wx.CallAfter(self.ShowDCFEntryDialog, row, col)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   705
            event.Veto()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   706
        else:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   707
            event.Skip()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   708
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   709
    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
   710
        if self.Editable or self.ParentWindow.GetCurrentNodeId() is None:
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   711
            selected = self.IndexList.GetSelection()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   712
            if selected != wx.NOT_FOUND:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   713
                index = self.ListIndex[selected]
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   714
                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
   715
                    dialog = DCFEntryValuesDialog(self, self.Editable)
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   716
                    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
   717
                    if dialog.ShowModal() == wx.ID_OK and self.Editable:
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   718
                        value = dialog.GetValues()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   719
                        self.Manager.SetCurrentEntry(index, row, value, "value", "dcf")
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   720
                        self.ParentWindow.RefreshBufferState()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   721
                        wx.CallAfter(self.RefreshTable)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   722
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   723
    def OnSubindexGridCellChange(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   724
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   725
            index = self.Table.GetCurrentIndex()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   726
            subIndex = event.GetRow()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   727
            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
   728
            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
   729
            value = self.Table.GetValue(subIndex, col, False)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   730
            editor = self.Table.GetEditor(subIndex, col)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   731
            self.Manager.SetCurrentEntry(index, subIndex, value, name, editor)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   732
            self.ParentWindow.RefreshBufferState()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   733
            wx.CallAfter(self.RefreshTable)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   734
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   735
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   736
    def OnCallbackCheck(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   737
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   738
            index = self.Table.GetCurrentIndex()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   739
            self.Manager.SetCurrentEntryCallbacks(index, self.CallbackCheck.GetValue())
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   740
            self.ParentWindow.RefreshBufferState()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   741
            wx.CallAfter(self.RefreshTable)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   742
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   743
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   744
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   745
#                          Contextual Menu functions
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   746
#-------------------------------------------------------------------------------
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   747
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   748
    def OnIndexListRightUp(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   749
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   750
            if not self.FirstCall:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   751
                self.FirstCall = True
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   752
                selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   753
                if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   754
                    index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   755
                    if index < 0x260:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   756
                        self.IndexListMenu.FindItemByPosition(0).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   757
                        self.IndexListMenu.FindItemByPosition(1).Enable(True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   758
                        self.PopupMenu(self.IndexListMenu)
273
58b39f97e352 Some bugs fixed
lbessard
parents: 271
diff changeset
   759
                    elif 0x1000 <= index <= 0x1FFF:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   760
                        self.IndexListMenu.FindItemByPosition(0).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   761
                        self.IndexListMenu.FindItemByPosition(1).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   762
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   763
                    elif 0x2000 <= index <= 0x5FFF:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   764
                        self.IndexListMenu.FindItemByPosition(0).Enable(True)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   765
                        self.IndexListMenu.FindItemByPosition(1).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   766
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   767
                    elif index >= 0x6000:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   768
                        self.IndexListMenu.FindItemByPosition(0).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   769
                        self.IndexListMenu.FindItemByPosition(1).Enable(False)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   770
                        self.PopupMenu(self.IndexListMenu)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   771
            else:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   772
                self.FirstCall = False
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   773
        event.Skip()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   774
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   775
    def OnSubindexGridRightClick(self, event):
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   776
        self.SubindexGrid.SetGridCursor(event.GetRow(), event.GetCol())
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   777
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   778
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   779
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   780
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   781
                if self.Manager.IsCurrentEntry(index):
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   782
                    showpopup = False
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   783
                    infos = self.Manager.GetEntryInfos(index)
310
1975e546178b Bugs on EDS import fixed
lbessard
parents: 299
diff changeset
   784
                    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
   785
                        showpopup = True
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   786
                        self.SubindexGridMenu.FindItemByPosition(0).Enable(True)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   787
                        self.SubindexGridMenu.FindItemByPosition(1).Enable(True)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   788
                    else:
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   789
                        self.SubindexGridMenu.FindItemByPosition(0).Enable(False)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   790
                        self.SubindexGridMenu.FindItemByPosition(1).Enable(False)
622
f0935accb93b Bug in Subindex grid right click with i18n fixed
laurent
parents: 608
diff changeset
   791
                    if self.Table.GetColLabelValue(event.GetCol(), False) == "value":
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   792
                        showpopup = True
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   793
                        self.SubindexGridMenu.FindItemByPosition(3).Enable(True)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   794
                    else:
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   795
                        self.SubindexGridMenu.FindItemByPosition(3).Enable(False)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   796
                    if showpopup:
242
4864f7f01e1d Changes in networkedit for integration with beremiz
lbessard
parents: 237
diff changeset
   797
                        self.PopupMenu(self.SubindexGridMenu)
757
8150518de469 Fix bug when using not editable EditingPanel for displaying nodelist generated master
Laurent Bessard
parents: 748
diff changeset
   798
        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
   799
            selected = self.IndexList.GetSelection()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   800
            if selected != wx.NOT_FOUND:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   801
                index = self.ListIndex[selected]
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   802
                if self.Manager.IsCurrentEntry(index):
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   803
                    infos = self.Manager.GetEntryInfos(index)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   804
                    if not infos["struct"] & OD_MultipleSubindexes or event.GetRow() > 0:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   805
                        self.SubindexGridMenu.FindItemByPosition(0).Enable(False)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   806
                        self.SubindexGridMenu.FindItemByPosition(1).Enable(False)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   807
                        self.SubindexGridMenu.FindItemByPosition(3).Enable(False)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   808
                        self.SubindexGridMenu.FindItemByPosition(4).Enable(True)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   809
                        self.PopupMenu(self.SubindexGridMenu)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   810
        event.Skip()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   811
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   812
    def OnAddToDCFSubindexMenu(self, event):
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   813
        if not self.Editable:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   814
            selected = self.IndexList.GetSelection()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   815
            if selected != wx.NOT_FOUND:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   816
                index = self.ListIndex[selected]
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   817
                subindex = self.SubindexGrid.GetGridCursorRow()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   818
                entry_infos = self.Manager.GetEntryInfos(index)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   819
                if not entry_infos["struct"] & OD_MultipleSubindexes or subindex != 0:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   820
                    subentry_infos = self.Manager.GetSubentryInfos(index, subindex)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   821
                    typeinfos = self.Manager.GetEntryInfos(subentry_infos["type"])
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   822
                    if typeinfos:
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   823
                        node_id = self.ParentWindow.GetCurrentNodeId()
336
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   824
                        value = self.Table.GetValueByName(subindex, "value")
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   825
                        if value == "True":
340
60e1eb89455e Bug on new DCF entry boolean value fixed
lbessard
parents: 336
diff changeset
   826
                            value = 1
60e1eb89455e Bug on new DCF entry boolean value fixed
lbessard
parents: 336
diff changeset
   827
                        elif value == "False":
336
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   828
                            value = 0
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   829
                        elif value.isdigit():
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   830
                            value = int(value)
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   831
                        elif value.startswith("0x"):
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   832
                            value = int(value, 16)
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   833
                        else:
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   834
                            value = int(value.encode("hex_codec"), 16)
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   835
                        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
   836
                        self.ParentWindow.OpenMasterDCFDialog(node_id)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   837
336
42ab55532da8 Bug on DCF edition fixed
lbessard
parents: 327
diff changeset
   838
    def OpenDCFDialog(self, node_id):
327
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   839
        self.PartList.SetSelection(7)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   840
        self.RefreshIndexList()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   841
        self.IndexList.SetSelection(self.ListIndex.index(0x1F22))
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   842
        self.RefreshTable()
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   843
        self.SubindexGrid.SetGridCursor(node_id, 3)
b904d9a99e28 Adding DCFEditor Dialog to networkedit
lbessard
parents: 324
diff changeset
   844
        self.ShowDCFEntryDialog(node_id, 3)
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   845
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   846
    def OnRenameIndexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   847
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   848
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   849
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   850
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   851
                if self.Manager.IsCurrentEntry(index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   852
                    infos = self.Manager.GetEntryInfos(index)
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   853
                    dialog = wx.TextEntryDialog(self, _("Give a new name for index 0x%04X")%index,
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   854
                                 _("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
   855
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   856
                        self.Manager.SetCurrentEntryName(index, dialog.GetValue())
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   857
                        self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   858
                        self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   859
                    dialog.Destroy()
608
daa1e1c3fba4 Removing superfluous event.Skip()
laurent
parents: 585
diff changeset
   860
        
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   861
    def OnModifyIndexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   862
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   863
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   864
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   865
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   866
                if self.Manager.IsCurrentEntry(index) and index < 0x260:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   867
                    values, valuetype = self.Manager.GetCustomisedTypeValues(index)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   868
                    dialog = UserTypeDialog(self)
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   869
                    dialog.SetTypeList(self.Manager.GetCustomisableTypes(), values[1])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   870
                    if valuetype == 0:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   871
                        dialog.SetValues(min = values[2], max = values[3])
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   872
                    elif valuetype == 1:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   873
                        dialog.SetValues(length = values[2])
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   874
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   875
                        type, min, max, length = dialog.GetValues()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   876
                        self.Manager.SetCurrentUserType(index, type, min, max, length)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   877
                        self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   878
                        self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   879
        
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   880
    def OnDeleteIndexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   881
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   882
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   883
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   884
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   885
                if self.Manager.IsCurrentEntry(index):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   886
                    self.Manager.ManageEntriesOfCurrent([],[index])
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   887
                    self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   888
                    self.RefreshIndexList()
608
daa1e1c3fba4 Removing superfluous event.Skip()
laurent
parents: 585
diff changeset
   889
        
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   890
    def OnAddSubindexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   891
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   892
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   893
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   894
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   895
                if self.Manager.IsCurrentEntry(index):
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   896
                    dialog = wx.TextEntryDialog(self, _("Number of subindexes to add:"),
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   897
                                 _("Add subindexes"), "1", wx.OK|wx.CANCEL)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   898
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   899
                        try:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   900
                            number = int(dialog.GetValue())
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   901
                            self.Manager.AddSubentriesToCurrent(index, number)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   902
                            self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   903
                            self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   904
                        except:
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   905
                            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
   906
                            message.ShowModal()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   907
                            message.Destroy()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   908
                    dialog.Destroy()
608
daa1e1c3fba4 Removing superfluous event.Skip()
laurent
parents: 585
diff changeset
   909
        
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   910
    def OnDeleteSubindexMenu(self, event):
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   911
        if self.Editable:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   912
            selected = self.IndexList.GetSelection()
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   913
            if selected != wx.NOT_FOUND:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   914
                index = self.ListIndex[selected]
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   915
                if self.Manager.IsCurrentEntry(index):
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   916
                    dialog = wx.TextEntryDialog(self, _("Number of subindexes to delete:"),
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   917
                                 _("Delete subindexes"), "1", wx.OK|wx.CANCEL)
254
f2b0acb54e65 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 243
diff changeset
   918
                    if dialog.ShowModal() == wx.ID_OK:
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   919
                        try:
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   920
                            number = int(dialog.GetValue())
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   921
                            self.Manager.RemoveSubentriesFromCurrent(index, number)
271
2f286d3fc7f6 Adding support for using Networkedit with Beremiz
lbessard
parents: 269
diff changeset
   922
                            self.ParentWindow.RefreshBufferState()
205
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   923
                            self.RefreshIndexList()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   924
                        except:
580
2ae92a99ac10 Adding support for internationalization
laurent
parents: 491
diff changeset
   925
                            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
   926
                            message.ShowModal()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   927
                            message.Destroy()
dac0f9b4e3f8 Adding program for network management
lbessard
parents:
diff changeset
   928
                    dialog.Destroy()
608
daa1e1c3fba4 Removing superfluous event.Skip()
laurent
parents: 585
diff changeset
   929
        
299
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   930
    def OnDefaultValueSubindexMenu(self, event):
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   931
        if self.Editable:
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   932
            selected = self.IndexList.GetSelection()
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   933
            if selected != wx.NOT_FOUND:
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   934
                index = self.ListIndex[selected]
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   935
                if self.Manager.IsCurrentEntry(index):
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   936
                    row = self.SubindexGrid.GetGridCursorRow()
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   937
                    self.Manager.SetCurrentEntryToDefault(index, row)
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   938
                    self.ParentWindow.RefreshBufferState()
506f9700b9fb Allowing user to type formulas
lbessard
parents: 281
diff changeset
   939
                    self.RefreshIndexList()