DataTypeEditor.py
changeset 577 9dbb79722fbc
parent 576 3f2024f30553
child 586 9aa96a36cf33
equal deleted inserted replaced
576:3f2024f30553 577:9dbb79722fbc
    22 #License along with this library; if not, write to the Free Software
    22 #License along with this library; if not, write to the Free Software
    23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    24 
    24 
    25 import wx
    25 import wx
    26 import wx.grid
    26 import wx.grid
    27 import wx.gizmos
    27 
    28 from plcopen.structures import IEC_KEYWORDS, TestIdentifier
    28 from plcopen.structures import IEC_KEYWORDS, TestIdentifier
    29 from graphics.GraphicCommons import REFRESH_HIGHLIGHT_PERIOD
    29 from graphics.GraphicCommons import REFRESH_HIGHLIGHT_PERIOD
       
    30 from controls import CustomEditableListBox, CustomGrid
    30 
    31 
    31 import re
    32 import re
    32 
    33 
    33 DIMENSION_MODEL = re.compile("([0-9]+)\.\.([0-9]+)$")
    34 DIMENSION_MODEL = re.compile("([0-9]+)\.\.([0-9]+)$")
    34 
    35 
   185         return self.data
   186         return self.data
   186     
   187     
   187     def AppendRow(self, row_content):
   188     def AppendRow(self, row_content):
   188         self.data.append(row_content)
   189         self.data.append(row_content)
   189 
   190 
       
   191     def InsertRow(self, row_index, row_content):
       
   192         self.data.insert(row_index, row_content)
       
   193 
   190     def RemoveRow(self, row_index):
   194     def RemoveRow(self, row_index):
   191         self.data.pop(row_index)
   195         self.data.pop(row_index)
   192 
   196 
   193     def MoveRow(self, idx, move):
   197     def MoveRow(self, idx, move):
   194         new_idx = max(0, min(idx + move, len(self.data) - 1))
   198         new_idx = max(0, min(idx + move, len(self.data) - 1))
   195         if new_idx != idx:
   199         if new_idx != idx:
   196             self.data.insert(new_idx, self.data.pop(idx))
   200             self.data.insert(new_idx, self.data.pop(idx))
   197             return new_idx
   201         return new_idx
   198         return None
   202         
   199     
       
   200     def GetRow(self, row_index):
   203     def GetRow(self, row_index):
   201         return self.data[row_index]
   204         return self.data[row_index]
   202 
   205 
   203     def Empty(self):
   206     def Empty(self):
   204         self.data = []
   207         self.data = []
   458 
   461 
   459         self.EnumeratedPanel = wx.Panel(id=ID_DATATYPEEDITORENUMERATEDPANEL,
   462         self.EnumeratedPanel = wx.Panel(id=ID_DATATYPEEDITORENUMERATEDPANEL,
   460               name='EnumeratedPanel', parent=self, pos=wx.Point(0, 0),
   463               name='EnumeratedPanel', parent=self, pos=wx.Point(0, 0),
   461               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   464               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   462 
   465 
   463         self.EnumeratedValues = wx.gizmos.EditableListBox(id=ID_DATATYPEEDITORENUMERATEDVALUES, 
   466         self.EnumeratedValues = CustomEditableListBox(id=ID_DATATYPEEDITORENUMERATEDVALUES, 
   464               name='EnumeratedValues', parent=self.EnumeratedPanel, label=_("Values:"), pos=wx.Point(0, 0),
   467               name='EnumeratedValues', parent=self.EnumeratedPanel, label=_("Values:"), pos=wx.Point(0, 0),
   465               size=wx.Size(0, 0), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
   468               size=wx.Size(0, 0), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
   466         self.EnumeratedValues.GetListCtrl().Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnEnumeratedValueEndEdit)
   469         for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
   467         self.EnumeratedValues.GetEditButton().SetToolTipString(_("Edit item"))
   470             setattr(self.EnumeratedValues, func, self.OnEnumeratedValuesChanged)
   468         new_button = self.EnumeratedValues.GetNewButton()
       
   469         new_button.SetToolTipString(_("New item"))
       
   470         new_button.Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
       
   471         del_button = self.EnumeratedValues.GetDelButton()
       
   472         del_button.SetToolTipString(_("Delete item"))
       
   473         del_button.Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
       
   474         up_button = self.EnumeratedValues.GetUpButton()
       
   475         up_button.SetToolTipString(_("Move up"))
       
   476         up_button.Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
       
   477         down_button = self.EnumeratedValues.GetDownButton()
       
   478         down_button.SetToolTipString(_("Move down"))
       
   479         down_button.Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
       
   480         
   471         
   481         self.staticText8 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT8,
   472         self.staticText8 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT8,
   482               label=_('Initial Value:'), name='staticText8', parent=self.EnumeratedPanel,
   473               label=_('Initial Value:'), name='staticText8', parent=self.EnumeratedPanel,
   483               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   474               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   484 
   475 
   500         self.ArrayBaseType = wx.ComboBox(id=ID_DATATYPEEDITORARRAYBASETYPE, 
   491         self.ArrayBaseType = wx.ComboBox(id=ID_DATATYPEEDITORARRAYBASETYPE, 
   501               name='ArrayBaseType', parent=self.ArrayPanel, pos=wx.Point(0, 0),
   492               name='ArrayBaseType', parent=self.ArrayPanel, pos=wx.Point(0, 0),
   502               size=wx.Size(0, 28), style=wx.CB_READONLY)
   493               size=wx.Size(0, 28), style=wx.CB_READONLY)
   503         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORARRAYBASETYPE)
   494         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORARRAYBASETYPE)
   504 
   495 
   505         self.ArrayDimensions = wx.gizmos.EditableListBox(id=ID_DATATYPEEDITORARRAYDIMENSIONS, 
   496         self.ArrayDimensions = CustomEditableListBox(id=ID_DATATYPEEDITORARRAYDIMENSIONS, 
   506               name='ArrayDimensions', parent=self.ArrayPanel, label=_("Dimensions:"), pos=wx.Point(0, 0),
   497               name='ArrayDimensions', parent=self.ArrayPanel, label=_("Dimensions:"), pos=wx.Point(0, 0),
   507               size=wx.Size(0, 24), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
   498               size=wx.Size(0, 24), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
   508         self.ArrayDimensions.GetListCtrl().Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnDimensionsChanged)
   499         self.ArrayDimensions.GetListCtrl().Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnDimensionsChanged)
   509         self.ArrayDimensions.GetEditButton().SetToolTipString(_("Edit item"))
   500         for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
   510         new_button = self.ArrayDimensions.GetNewButton()
   501             setattr(self.EnumeratedValues, func, self.OnDimensionsChanged)
   511         new_button.SetToolTipString(_("New item"))
   502         
   512         new_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
       
   513         del_button = self.ArrayDimensions.GetDelButton()
       
   514         del_button.SetToolTipString(_("Delete item"))
       
   515         del_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
       
   516         up_button = self.ArrayDimensions.GetUpButton()
       
   517         up_button.SetToolTipString(_("Move up"))
       
   518         up_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
       
   519         down_button = self.ArrayDimensions.GetDownButton()
       
   520         down_button.SetToolTipString(_("Move down"))
       
   521         down_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
       
   522 
       
   523         self.staticText10 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT10,
   503         self.staticText10 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT10,
   524               label=_('Initial Value:'), name='staticText10', parent=self.ArrayPanel,
   504               label=_('Initial Value:'), name='staticText10', parent=self.ArrayPanel,
   525               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   505               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   526 
   506 
   527         self.ArrayInitialValue = wx.TextCtrl(id=ID_DATATYPEEDITORARRAYINITIALVALUE, 
   507         self.ArrayInitialValue = wx.TextCtrl(id=ID_DATATYPEEDITORARRAYINITIALVALUE, 
   537         
   517         
   538         self.staticText11 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT11,
   518         self.staticText11 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT11,
   539               label=_('Elements :'), name='staticText11', parent=self.StructurePanel,
   519               label=_('Elements :'), name='staticText11', parent=self.StructurePanel,
   540               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   520               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
   541 
   521 
   542         self.StructureElementsGrid = wx.grid.Grid(id=ID_DATATYPEEDITORSTRUCTUREELEMENTSGRID,
   522         self.StructureElementsGrid = CustomGrid(id=ID_DATATYPEEDITORSTRUCTUREELEMENTSGRID,
   543               name='StructureElementsGrid', parent=self.StructurePanel, pos=wx.Point(0, 0), 
   523               name='StructureElementsGrid', parent=self.StructurePanel, pos=wx.Point(0, 0), 
   544               size=wx.Size(0, 150), style=wx.VSCROLL)
   524               size=wx.Size(0, 150), style=wx.VSCROLL)
   545         self.StructureElementsGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
   525         self.StructureElementsGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
   546               'Sans'))
   526               'Sans'))
   547         self.StructureElementsGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
   527         self.StructureElementsGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
   552             self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnStructureElementsGridCellChange)
   532             self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnStructureElementsGridCellChange)
   553             self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, self.OnStructureElementsGridEditorShown)
   533             self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, self.OnStructureElementsGridEditorShown)
   554         else:
   534         else:
   555             wx.grid.EVT_GRID_CELL_CHANGE(self.StructureElementsGrid, self.OnStructureElementsGridCellChange)
   535             wx.grid.EVT_GRID_CELL_CHANGE(self.StructureElementsGrid, self.OnStructureElementsGridCellChange)
   556             wx.grid.EVT_GRID_EDITOR_SHOWN(self.StructureElementsGrid, self.OnStructureElementsGridEditorShown)
   536             wx.grid.EVT_GRID_EDITOR_SHOWN(self.StructureElementsGrid, self.OnStructureElementsGridEditorShown)
   557 
   537         
   558         self.StructureAddButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREADDBUTTON, label=_('Add'),
   538         self.StructureAddButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREADDBUTTON, label=_('Add'),
   559               name='StructureAddButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
   539               name='StructureAddButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
   560               size=wx.DefaultSize, style=0)
   540               size=wx.DefaultSize, style=0)
   561         self.Bind(wx.EVT_BUTTON, self.OnStructureAddButton, id=ID_DATATYPEEDITORSTRUCTUREADDBUTTON)
   541         
   562 
       
   563         self.StructureDeleteButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON, label=_('Delete'),
   542         self.StructureDeleteButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON, label=_('Delete'),
   564               name='StructureDeleteButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
   543               name='StructureDeleteButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
   565               size=wx.DefaultSize, style=0)
   544               size=wx.DefaultSize, style=0)
   566         self.Bind(wx.EVT_BUTTON, self.OnStructureDeleteButton, id=ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON)
   545         
   567 
       
   568         self.StructureUpButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREUPBUTTON, label='^',
   546         self.StructureUpButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREUPBUTTON, label='^',
   569               name='StructureUpButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
   547               name='StructureUpButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
   570               size=wx.Size(32, 32), style=0)
   548               size=wx.Size(32, 32), style=0)
   571         self.Bind(wx.EVT_BUTTON, self.OnStructureUpButton, id=ID_DATATYPEEDITORSTRUCTUREUPBUTTON)
   549         
   572 
       
   573         self.StructureDownButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDOWNBUTTON, label='v',
   550         self.StructureDownButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDOWNBUTTON, label='v',
   574               name='StructureDownButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
   551               name='StructureDownButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
   575               size=wx.Size(32, 32), style=0)
   552               size=wx.Size(32, 32), style=0)
   576         self.Bind(wx.EVT_BUTTON, self.OnStructureDownButton, id=ID_DATATYPEEDITORSTRUCTUREDOWNBUTTON)
   553         
   577 
       
   578         self._init_sizers()
   554         self._init_sizers()
   579 
   555 
   580     def __init__(self, parent, tagname, window, controler):
   556     def __init__(self, parent, tagname, window, controler):
   581         self._init_ctrls(parent)
   557         self._init_ctrls(parent)
   582         
   558         
   584         self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames())
   560         self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames())
   585         self.StructureColSizes = [40, 150, 100, 250]
   561         self.StructureColSizes = [40, 150, 100, 250]
   586         self.StructureColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]
   562         self.StructureColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]
   587         
   563         
   588         self.StructureElementsGrid.SetTable(self.StructureElementsTable)
   564         self.StructureElementsGrid.SetTable(self.StructureElementsTable)
       
   565         self.StructureElementsGrid.SetButtons({"Add": self.StructureAddButton,
       
   566                                                "Delete": self.StructureDeleteButton,
       
   567                                                "Up": self.StructureUpButton,
       
   568                                                "Down": self.StructureDownButton})
       
   569         
       
   570         def _AddStructureElement(new_row):
       
   571             self.StructureElementsTable.InsertRow(new_row, self.StructureElementDefaultValue.copy())
       
   572             self.RefreshTypeInfos()
       
   573             self.StructureElementsTable.ResetView(self.StructureElementsGrid)
       
   574             return new_row
       
   575         setattr(self.StructureElementsGrid, "_AddRow", _AddStructureElement)
       
   576         
       
   577         def _DeleteStructureElement(row):
       
   578             self.StructureElementsTable.RemoveRow(row)
       
   579             self.RefreshTypeInfos()
       
   580             self.StructureElementsTable.ResetView(self.StructureElementsGrid)
       
   581         setattr(self.StructureElementsGrid, "_DeleteRow", _DeleteStructureElement)
       
   582             
       
   583         def _MoveStructureElement(row, move):
       
   584             new_row = self.StructureElementsTable.MoveRow(row, move)
       
   585             if new_row != row:
       
   586                 self.RefreshTypeInfos()
       
   587                 self.StructureElementsTable.ResetView(self.StructureElementsGrid)
       
   588             return new_row
       
   589         setattr(self.StructureElementsGrid, "_MoveRow", _MoveStructureElement)
       
   590         
   589         self.StructureElementsGrid.SetRowLabelSize(0)
   591         self.StructureElementsGrid.SetRowLabelSize(0)
   590         for col in range(self.StructureElementsTable.GetNumberCols()):
   592         for col in range(self.StructureElementsTable.GetNumberCols()):
   591             attr = wx.grid.GridCellAttr()
   593             attr = wx.grid.GridCellAttr()
   592             attr.SetAlignment(self.StructureColAlignements[col], wx.ALIGN_CENTRE)
   594             attr.SetAlignment(self.StructureColAlignements[col], wx.ALIGN_CENTRE)
   593             self.StructureElementsGrid.SetColAttr(col, attr)
   595             self.StructureElementsGrid.SetColAttr(col, attr)
   594             self.StructureElementsGrid.SetColMinimalWidth(col, self.StructureColSizes[col])
   596             self.StructureElementsGrid.SetColMinimalWidth(col, self.StructureColSizes[col])
   595             self.StructureElementsGrid.AutoSizeColumn(col, False)
   597             self.StructureElementsGrid.AutoSizeColumn(col, False)
       
   598         self.StructureElementsGrid.RefreshButtons()
   596         
   599         
   597         for datatype in GetDatatypeTypes():
   600         for datatype in GetDatatypeTypes():
   598             self.DerivationType.Append(_(datatype))
   601             self.DerivationType.Append(_(datatype))
   599         self.SubrangePanel.Hide()
   602         self.SubrangePanel.Hide()
   600         self.EnumeratedPanel.Hide()
   603         self.EnumeratedPanel.Hide()
   688             elif type_infos["type"] == "Structure":
   691             elif type_infos["type"] == "Structure":
   689                 self.StructureElementsTable.SetData(type_infos["elements"])
   692                 self.StructureElementsTable.SetData(type_infos["elements"])
   690             self.RefreshDisplayedInfos()
   693             self.RefreshDisplayedInfos()
   691         self.ShowHighlights()
   694         self.ShowHighlights()
   692         self.StructureElementsTable.ResetView(self.StructureElementsGrid)
   695         self.StructureElementsTable.ResetView(self.StructureElementsGrid)
       
   696         self.StructureElementsGrid.RefreshButtons()
   693         self.Initializing = False
   697         self.Initializing = False
   694 
   698 
   695     def RefreshScaling(self, refresh=True):
   699     def RefreshScaling(self, refresh=True):
   696         pass
   700         pass
   697 
   701 
   756     def OnEnumeratedValuesChanged(self, event):
   760     def OnEnumeratedValuesChanged(self, event):
   757         wx.CallAfter(self.RefreshEnumeratedValues)
   761         wx.CallAfter(self.RefreshEnumeratedValues)
   758         wx.CallAfter(self.RefreshTypeInfos)
   762         wx.CallAfter(self.RefreshTypeInfos)
   759         event.Skip()
   763         event.Skip()
   760     
   764     
   761     def OnStructureAddButton(self, event):
       
   762         new_row = self.StructureElementDefaultValue.copy()
       
   763         self.StructureElementsTable.AppendRow(new_row)
       
   764         self.RefreshTypeInfos()
       
   765         self.StructureElementsTable.ResetView(self.StructureElementsGrid)
       
   766         event.Skip()
       
   767     
       
   768     def OnStructureDeleteButton(self, event):
       
   769         row = self.StructureElementsGrid.GetGridCursorRow()
       
   770         self.StructureElementsTable.RemoveRow(row)
       
   771         self.RefreshTypeInfos()
       
   772         self.StructureElementsTable.ResetView(self.StructureElementsGrid)
       
   773         event.Skip()
       
   774     
       
   775     def OnStructureUpButton(self, event):
       
   776         row = self.StructureElementsGrid.GetGridCursorRow()
       
   777         new_index = self.StructureElementsTable.MoveRow(row, -1)
       
   778         if new_index is not None:
       
   779             self.RefreshTypeInfos()
       
   780             self.StructureElementsTable.ResetView(self.StructureElementsGrid)
       
   781             self.StructureElementsGrid.SetGridCursor(new_index, self.StructureElementsGrid.GetGridCursorCol())
       
   782         event.Skip()
       
   783     
       
   784     def OnStructureDownButton(self, event):
       
   785         row = self.StructureElementsGrid.GetGridCursorRow()
       
   786         new_index = self.StructureElementsTable.MoveRow(row, 1)
       
   787         if new_index is not None:
       
   788             self.RefreshTypeInfos()
       
   789             self.StructureElementsTable.ResetView(self.StructureElementsGrid)
       
   790             self.StructureElementsGrid.SetGridCursor(new_index, self.StructureElementsGrid.GetGridCursorCol())
       
   791         event.Skip()
       
   792 
       
   793     def OnStructureElementsGridCellChange(self, event):
   765     def OnStructureElementsGridCellChange(self, event):
   794         row, col = event.GetRow(), event.GetCol()
   766         row, col = event.GetRow(), event.GetCol()
   795         colname = self.StructureElementsTable.GetColLabelValue(col)
   767         colname = self.StructureElementsTable.GetColLabelValue(col)
   796         value = self.StructureElementsTable.GetValue(row, col)
   768         value = self.StructureElementsTable.GetValue(row, col)
   797         if colname == "Name":
   769         if colname == "Name":
   815                 message.ShowModal()
   787                 message.ShowModal()
   816                 message.Destroy()
   788                 message.Destroy()
   817                 event.Veto()
   789                 event.Veto()
   818             else:
   790             else:
   819                 self.RefreshTypeInfos()
   791                 self.RefreshTypeInfos()
   820                 self.StructureElementsTable.ResetView(self.StructureElementsGrid)
   792                 wx.CallAfter(self.StructureElementsTable.ResetView, self.StructureElementsGrid)
   821 ##                old_value = self.Table.GetOldValue()
   793 ##                old_value = self.Table.GetOldValue()
   822 ##                if old_value != "":
   794 ##                if old_value != "":
   823 ##                    self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_value, value)
   795 ##                    self.Controler.UpdateEditedElementUsedVariable(self.TagName, old_value, value)
   824 ##                self.Controler.BufferProject()
   796 ##                self.Controler.BufferProject()
   825                 event.Skip()
   797                 event.Skip()
   826         else:
   798         else:
   827             self.RefreshTypeInfos()
   799             self.RefreshTypeInfos()
   828             self.StructureElementsTable.ResetView(self.StructureElementsGrid)
   800             wx.CallAfter(self.StructureElementsTable.ResetView, self.StructureElementsGrid)
   829             event.Skip()
   801             event.Skip()
       
   802     
       
   803     def OnStructureElementsGridSelectCell(self, event):
       
   804         wx.CallAfter(self.RefreshStructureButtons)
       
   805         event.Skip()
   830     
   806     
   831     def OnStructureElementsGridEditorShown(self, event):
   807     def OnStructureElementsGridEditorShown(self, event):
   832         row, col = event.GetRow(), event.GetCol() 
   808         row, col = event.GetRow(), event.GetCol() 
   833         if self.StructureElementsTable.GetColLabelValue(col) == "Type":
   809         if self.StructureElementsTable.GetColLabelValue(col) == "Type":
   834             type_menu = wx.Menu(title='')
   810             type_menu = wx.Menu(title='')