--- a/editors/DataTypeEditor.py Wed May 28 18:33:41 2014 +0200
+++ b/editors/DataTypeEditor.py Fri May 30 02:20:19 2014 +0200
@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor
-#based on the plcopen standard.
+#based on the plcopen standard.
#
#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
#
@@ -29,7 +29,7 @@
import wx.grid
import wx.lib.buttons
-from plcopen.structures import IEC_KEYWORDS, TestIdentifier
+from plcopen.structures import IEC_KEYWORDS, TestIdentifier, DefaultType
from graphics.GraphicCommons import REFRESH_HIGHLIGHT_PERIOD
from controls import CustomEditableListBox, CustomGrid, CustomTable
from dialogs import ArrayTypeDialog
@@ -59,7 +59,7 @@
#-------------------------------------------------------------------------------
class ElementsTable(CustomTable):
-
+
"""
A custom wx.grid.Grid Table using user supplied data
"""
@@ -67,7 +67,7 @@
# The base class must be initialized *first*
CustomTable.__init__(self, parent, data, colnames)
self.old_value = None
-
+
def GetValue(self, row, col):
if row < self.GetNumberRows():
if col == 0:
@@ -78,17 +78,17 @@
if value[0] == "array":
return "ARRAY [%s] OF %s" % (",".join(map(lambda x : "..".join(x), value[2])), value[1])
return str(value)
-
+
def SetValue(self, row, col, value):
if col < len(self.colnames):
colname = self.GetColLabelValue(col, False)
if colname == "Name":
self.old_value = self.data[row][colname]
self.data[row][colname] = value
-
+
def GetOldValue(self):
return self.old_value
-
+
def _updateColAttrs(self, grid):
"""
wx.grid.Grid -> update the column attributes to add the
@@ -96,7 +96,7 @@
Otherwise default to the default renderer.
"""
-
+
for row in range(self.GetNumberRows()):
row_highlights = self.Highlights.get(row, {})
for col in range(self.GetNumberCols()):
@@ -115,15 +115,15 @@
editor = wx.grid.GridCellTextEditor()
else:
grid.SetReadOnly(row, col, True)
-
+
grid.SetCellEditor(row, col, editor)
grid.SetCellRenderer(row, col, renderer)
-
+
highlight_colours = row_highlights.get(colname.lower(), [(wx.WHITE, wx.BLACK)])[-1]
grid.SetCellBackgroundColour(row, col, highlight_colours[0])
grid.SetCellTextColour(row, col, highlight_colours[1])
self.ResizeRow(grid, row)
-
+
def AddHighlight(self, infos, highlight_type):
row_highlights = self.Highlights.setdefault(infos[0], {})
if infos[1] == "initial":
@@ -137,216 +137,216 @@
#-------------------------------------------------------------------------------
class DataTypeEditor(EditorPanel):
-
+
def _init_Editor(self, parent):
self.Editor = wx.Panel(parent, style=wx.SUNKEN_BORDER)
-
+
self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
self.MainSizer.AddGrowableCol(0)
self.MainSizer.AddGrowableRow(1)
-
+
top_sizer = wx.BoxSizer(wx.HORIZONTAL)
- self.MainSizer.AddSizer(top_sizer, border=5,
+ self.MainSizer.AddSizer(top_sizer, border=5,
flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
-
+
derivation_type_label = wx.StaticText(self.Editor, label=_('Derivation Type:'))
- top_sizer.AddWindow(derivation_type_label, border=5,
+ top_sizer.AddWindow(derivation_type_label, border=5,
flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT)
-
+
self.DerivationType = wx.ComboBox(self.Editor,
size=wx.Size(200, -1), style=wx.CB_READONLY)
self.Bind(wx.EVT_COMBOBOX, self.OnDerivationTypeChanged, self.DerivationType)
top_sizer.AddWindow(self.DerivationType, border=5, flag=wx.GROW|wx.RIGHT)
-
+
typeinfos_staticbox = wx.StaticBox(self.Editor, label=_('Type infos:'))
typeinfos_sizer = wx.StaticBoxSizer(typeinfos_staticbox, wx.HORIZONTAL)
- self.MainSizer.AddSizer(typeinfos_sizer, border=5,
+ self.MainSizer.AddSizer(typeinfos_sizer, border=5,
flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
-
+
# Panel for Directly derived data types
self.DirectlyPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
typeinfos_sizer.AddWindow(self.DirectlyPanel, 1)
-
+
directly_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)
-
- directly_basetype_label = wx.StaticText(self.DirectlyPanel,
+
+ directly_basetype_label = wx.StaticText(self.DirectlyPanel,
label=_('Base Type:'))
- directly_panel_sizer.AddWindow(directly_basetype_label, 1, border=5,
+ directly_panel_sizer.AddWindow(directly_basetype_label, 1, border=5,
flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
-
+
self.DirectlyBaseType = wx.ComboBox(self.DirectlyPanel, style=wx.CB_READONLY)
self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.DirectlyBaseType)
- directly_panel_sizer.AddWindow(self.DirectlyBaseType, 1, border=5,
+ directly_panel_sizer.AddWindow(self.DirectlyBaseType, 1, border=5,
flag=wx.GROW|wx.ALL)
-
+
directly_initialvalue_label = wx.StaticText(self.DirectlyPanel,
label=_('Initial Value:'))
- directly_panel_sizer.AddWindow(directly_initialvalue_label, 1, border=5,
+ directly_panel_sizer.AddWindow(directly_initialvalue_label, 1, border=5,
flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
-
- self.DirectlyInitialValue = wx.TextCtrl(self.DirectlyPanel,
+
+ self.DirectlyInitialValue = wx.TextCtrl(self.DirectlyPanel,
style=wx.TE_PROCESS_ENTER|wx.TE_RICH)
self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.DirectlyInitialValue)
- directly_panel_sizer.AddWindow(self.DirectlyInitialValue, 1, border=5,
+ directly_panel_sizer.AddWindow(self.DirectlyInitialValue, 1, border=5,
flag=wx.ALL)
-
+
self.DirectlyPanel.SetSizer(directly_panel_sizer)
-
+
# Panel for Subrange data types
self.SubrangePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
typeinfos_sizer.AddWindow(self.SubrangePanel, 1)
-
+
subrange_panel_sizer = wx.GridSizer(cols=4, hgap=5, rows=3, vgap=0)
-
+
subrange_basetype_label = wx.StaticText(self.SubrangePanel,
label=_('Base Type:'))
- subrange_panel_sizer.AddWindow(subrange_basetype_label, 1, border=5,
+ subrange_panel_sizer.AddWindow(subrange_basetype_label, 1, border=5,
flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
-
+
self.SubrangeBaseType = wx.ComboBox(self.SubrangePanel, style=wx.CB_READONLY)
- self.Bind(wx.EVT_COMBOBOX, self.OnSubrangeBaseTypeChanged,
+ self.Bind(wx.EVT_COMBOBOX, self.OnSubrangeBaseTypeChanged,
self.SubrangeBaseType)
- subrange_panel_sizer.AddWindow(self.SubrangeBaseType, 1, border=5,
+ subrange_panel_sizer.AddWindow(self.SubrangeBaseType, 1, border=5,
flag=wx.GROW|wx.ALL)
-
+
subrange_initialvalue_label = wx.StaticText(self.SubrangePanel,
label=_('Initial Value:'))
- subrange_panel_sizer.AddWindow(subrange_initialvalue_label, 1, border=5,
+ subrange_panel_sizer.AddWindow(subrange_initialvalue_label, 1, border=5,
flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
-
- self.SubrangeInitialValue = wx.SpinCtrl(self.SubrangePanel,
+
+ self.SubrangeInitialValue = wx.SpinCtrl(self.SubrangePanel,
style=wx.TAB_TRAVERSAL)
self.Bind(wx.EVT_SPINCTRL, self.OnInfosChanged, self.SubrangeInitialValue)
- subrange_panel_sizer.AddWindow(self.SubrangeInitialValue, 1, border=5,
+ subrange_panel_sizer.AddWindow(self.SubrangeInitialValue, 1, border=5,
flag=wx.GROW|wx.ALL)
-
+
subrange_minimum_label = wx.StaticText(self.SubrangePanel, label=_('Minimum:'))
- subrange_panel_sizer.AddWindow(subrange_minimum_label, 1, border=5,
+ subrange_panel_sizer.AddWindow(subrange_minimum_label, 1, border=5,
flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
-
+
self.SubrangeMinimum = wx.SpinCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMinimumChanged, self.SubrangeMinimum)
- subrange_panel_sizer.AddWindow(self.SubrangeMinimum, 1, border=5,
+ subrange_panel_sizer.AddWindow(self.SubrangeMinimum, 1, border=5,
flag=wx.GROW|wx.ALL)
-
+
for i in xrange(2):
subrange_panel_sizer.AddWindow(wx.Size(0, 0), 1)
-
+
subrange_maximum_label = wx.StaticText(self.SubrangePanel,
label=_('Maximum:'))
- subrange_panel_sizer.AddWindow(subrange_maximum_label, 1, border=5,
+ subrange_panel_sizer.AddWindow(subrange_maximum_label, 1, border=5,
flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
-
+
self.SubrangeMaximum = wx.SpinCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMaximumChanged, self.SubrangeMaximum)
-
- subrange_panel_sizer.AddWindow(self.SubrangeMaximum, 1, border=5,
+
+ subrange_panel_sizer.AddWindow(self.SubrangeMaximum, 1, border=5,
flag=wx.GROW|wx.ALL)
-
+
self.SubrangePanel.SetSizer(subrange_panel_sizer)
-
+
# Panel for Enumerated data types
-
+
self.EnumeratedPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
typeinfos_sizer.AddWindow(self.EnumeratedPanel, 1)
-
+
enumerated_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)
-
- self.EnumeratedValues = CustomEditableListBox(self.EnumeratedPanel,
- label=_("Values:"), style=wx.gizmos.EL_ALLOW_NEW|
- wx.gizmos.EL_ALLOW_EDIT|
+
+ self.EnumeratedValues = CustomEditableListBox(self.EnumeratedPanel,
+ label=_("Values:"), style=wx.gizmos.EL_ALLOW_NEW|
+ wx.gizmos.EL_ALLOW_EDIT|
wx.gizmos.EL_ALLOW_DELETE)
setattr(self.EnumeratedValues, "_OnLabelEndEdit", self.OnEnumeratedValueEndEdit)
for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
setattr(self.EnumeratedValues, func, self.OnEnumeratedValuesChanged)
- enumerated_panel_sizer.AddWindow(self.EnumeratedValues, 1, border=5,
+ enumerated_panel_sizer.AddWindow(self.EnumeratedValues, 1, border=5,
flag=wx.GROW|wx.ALL)
-
+
enumerated_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL)
enumerated_panel_sizer.AddSizer(enumerated_panel_rightsizer, 1)
-
+
enumerated_initialvalue_label = wx.StaticText(self.EnumeratedPanel,
label=_('Initial Value:'))
- enumerated_panel_rightsizer.AddWindow(enumerated_initialvalue_label, 1,
+ enumerated_panel_rightsizer.AddWindow(enumerated_initialvalue_label, 1,
border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
-
- self.EnumeratedInitialValue = wx.ComboBox(self.EnumeratedPanel,
+
+ self.EnumeratedInitialValue = wx.ComboBox(self.EnumeratedPanel,
style=wx.CB_READONLY)
self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.EnumeratedInitialValue)
- enumerated_panel_rightsizer.AddWindow(self.EnumeratedInitialValue, 1,
+ enumerated_panel_rightsizer.AddWindow(self.EnumeratedInitialValue, 1,
border=5, flag=wx.ALL)
-
+
self.EnumeratedPanel.SetSizer(enumerated_panel_sizer)
-
+
# Panel for Array data types
self.ArrayPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
typeinfos_sizer.AddWindow(self.ArrayPanel, 1)
-
+
array_panel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0)
array_panel_sizer.AddGrowableCol(0)
array_panel_sizer.AddGrowableCol(1)
array_panel_sizer.AddGrowableRow(1)
-
+
array_panel_leftSizer = wx.BoxSizer(wx.HORIZONTAL)
array_panel_sizer.AddSizer(array_panel_leftSizer, flag=wx.GROW)
-
+
array_basetype_label = wx.StaticText(self.ArrayPanel, label=_('Base Type:'))
- array_panel_leftSizer.AddWindow(array_basetype_label, 1, border=5,
+ array_panel_leftSizer.AddWindow(array_basetype_label, 1, border=5,
flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
-
+
self.ArrayBaseType = wx.ComboBox(self.ArrayPanel, style=wx.CB_READONLY)
self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.ArrayBaseType)
- array_panel_leftSizer.AddWindow(self.ArrayBaseType, 1, border=5,
+ array_panel_leftSizer.AddWindow(self.ArrayBaseType, 1, border=5,
flag=wx.GROW|wx.ALL)
-
+
array_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL)
array_panel_sizer.AddSizer(array_panel_rightsizer, flag=wx.GROW)
-
+
array_initialvalue_label = wx.StaticText(self.ArrayPanel,
label=_('Initial Value:'))
- array_panel_rightsizer.AddWindow(array_initialvalue_label, 1, border=5,
+ array_panel_rightsizer.AddWindow(array_initialvalue_label, 1, border=5,
flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
-
+
self.ArrayInitialValue = wx.TextCtrl(self.ArrayPanel,
style=wx.TE_PROCESS_ENTER|wx.TE_RICH)
self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.ArrayInitialValue)
- array_panel_rightsizer.AddWindow(self.ArrayInitialValue, 1, border=5,
- flag=wx.ALL)
-
- self.ArrayDimensions = CustomEditableListBox(self.ArrayPanel,
+ array_panel_rightsizer.AddWindow(self.ArrayInitialValue, 1, border=5,
+ flag=wx.ALL)
+
+ self.ArrayDimensions = CustomEditableListBox(self.ArrayPanel,
label=_("Dimensions:"), style=wx.gizmos.EL_ALLOW_NEW|
wx.gizmos.EL_ALLOW_EDIT|
wx.gizmos.EL_ALLOW_DELETE)
- for func in ["_OnLabelEndEdit", "_OnAddButton", "_OnDelButton",
+ for func in ["_OnLabelEndEdit", "_OnAddButton", "_OnDelButton",
"_OnUpButton", "_OnDownButton"]:
setattr(self.ArrayDimensions, func, self.OnDimensionsChanged)
- array_panel_sizer.AddWindow(self.ArrayDimensions, 0, border=5,
+ array_panel_sizer.AddWindow(self.ArrayDimensions, 0, border=5,
flag=wx.GROW|wx.ALL)
-
+
self.ArrayPanel.SetSizer(array_panel_sizer)
-
+
# Panel for Structure data types
-
+
self.StructurePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
typeinfos_sizer.AddWindow(self.StructurePanel, 1)
-
+
structure_panel_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
structure_panel_sizer.AddGrowableCol(0)
structure_panel_sizer.AddGrowableRow(1)
-
+
structure_button_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
structure_button_sizer.AddGrowableCol(0)
structure_button_sizer.AddGrowableRow(0)
- structure_panel_sizer.AddSizer(structure_button_sizer, 0, border=5,
+ structure_panel_sizer.AddSizer(structure_button_sizer, 0, border=5,
flag=wx.ALL|wx.GROW)
-
+
structure_elements_label = wx.StaticText(self.StructurePanel,
label=_('Elements :'))
structure_button_sizer.AddWindow(structure_elements_label, flag=wx.ALIGN_BOTTOM)
-
+
for name, bitmap, help in [
("StructureAddButton", "add_element", _("Add element")),
("StructureDeleteButton", "remove_element", _("Remove element")),
@@ -357,46 +357,46 @@
button.SetToolTipString(help)
setattr(self, name, button)
structure_button_sizer.AddWindow(button)
-
- self.StructureElementsGrid = CustomGrid(self.StructurePanel,
+
+ self.StructureElementsGrid = CustomGrid(self.StructurePanel,
size=wx.Size(0, 150), style=wx.VSCROLL)
- self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
+ self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
self.OnStructureElementsGridCellChange)
- self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN,
+ self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN,
self.OnStructureElementsGridEditorShown)
structure_panel_sizer.AddWindow(self.StructureElementsGrid, flag=wx.GROW)
-
+
self.StructurePanel.SetSizer(structure_panel_sizer)
-
+
self.Editor.SetSizer(self.MainSizer)
-
+
def __init__(self, parent, tagname, window, controler):
EditorPanel.__init__(self, parent, tagname, window, controler)
-
- self.StructureElementDefaultValue = {"Name" : "", "Type" : "INT", "Initial Value" : ""}
+
+ self.StructureElementDefaultValue = {"Name" : "", "Type" : DefaultType, "Initial Value" : ""}
self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames())
self.StructureColSizes = [40, 150, 100, 250]
self.StructureColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]
-
+
self.StructureElementsGrid.SetTable(self.StructureElementsTable)
self.StructureElementsGrid.SetButtons({"Add": self.StructureAddButton,
"Delete": self.StructureDeleteButton,
"Up": self.StructureUpButton,
"Down": self.StructureDownButton})
-
+
def _AddStructureElement(new_row):
self.StructureElementsTable.InsertRow(new_row, self.StructureElementDefaultValue.copy())
self.RefreshTypeInfos()
self.StructureElementsTable.ResetView(self.StructureElementsGrid)
return new_row
setattr(self.StructureElementsGrid, "_AddRow", _AddStructureElement)
-
+
def _DeleteStructureElement(row):
self.StructureElementsTable.RemoveRow(row)
self.RefreshTypeInfos()
self.StructureElementsTable.ResetView(self.StructureElementsGrid)
setattr(self.StructureElementsGrid, "_DeleteRow", _DeleteStructureElement)
-
+
def _MoveStructureElement(row, move):
new_row = self.StructureElementsTable.MoveRow(row, move)
if new_row != row:
@@ -404,7 +404,7 @@
self.StructureElementsTable.ResetView(self.StructureElementsGrid)
return new_row
setattr(self.StructureElementsGrid, "_MoveRow", _MoveStructureElement)
-
+
self.StructureElementsGrid.SetRowLabelSize(0)
for col in range(self.StructureElementsTable.GetNumberCols()):
attr = wx.grid.GridCellAttr()
@@ -413,7 +413,7 @@
self.StructureElementsGrid.SetColMinimalWidth(col, self.StructureColSizes[col])
self.StructureElementsGrid.AutoSizeColumn(col, False)
self.StructureElementsGrid.RefreshButtons()
-
+
for datatype in GetDatatypeTypes():
self.DerivationType.Append(_(datatype))
self.SubrangePanel.Hide()
@@ -423,7 +423,7 @@
self.CurrentPanel = "Directly"
self.Highlights = []
self.Initializing = False
-
+
self.HighlightControls = {
("Directly", "base"): self.DirectlyBaseType,
("Directly", "initial"): self.DirectlyInitialValue,
@@ -437,27 +437,27 @@
("Array", "base"): self.ArrayBaseType,
("Array", "range"): self.ArrayDimensions,
}
-
+
self.RefreshHighlightsTimer = wx.Timer(self, -1)
self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer)
-
+
def __del__(self):
self.RefreshHighlightsTimer.Stop()
-
+
def GetBufferState(self):
return self.Controler.GetBufferState()
-
+
def Undo(self):
self.Controler.LoadPrevious()
self.ParentWindow.CloseTabsWithoutModel()
-
+
def Redo(self):
self.Controler.LoadNext()
self.ParentWindow.CloseTabsWithoutModel()
-
+
def HasNoModel(self):
return self.Controler.GetEditedElement(self.TagName) is None
-
+
def RefreshView(self):
self.Initializing = True
self.DirectlyBaseType.Clear()
@@ -504,7 +504,7 @@
self.StructureElementsTable.ResetView(self.StructureElementsGrid)
self.StructureElementsGrid.RefreshButtons()
self.Initializing = False
-
+
def OnDerivationTypeChanged(self, event):
wx.CallAfter(self.RefreshDisplayedInfos)
wx.CallAfter(self.RefreshTypeInfos)
@@ -512,7 +512,7 @@
def OnReturnKeyPressed(self, event):
self.RefreshTypeInfos()
-
+
def OnInfosChanged(self, event):
self.RefreshTypeInfos()
event.Skip()
@@ -563,12 +563,12 @@
event.Skip()
else:
event.Skip()
-
+
def OnEnumeratedValuesChanged(self, event):
wx.CallAfter(self.RefreshEnumeratedValues)
wx.CallAfter(self.RefreshTypeInfos)
event.Skip()
-
+
def OnStructureElementsGridCellChange(self, event):
row, col = event.GetRow(), event.GetCol()
colname = self.StructureElementsTable.GetColLabelValue(col, False)
@@ -606,34 +606,34 @@
self.RefreshTypeInfos()
wx.CallAfter(self.StructureElementsTable.ResetView, self.StructureElementsGrid)
event.Skip()
-
+
def OnStructureElementsGridSelectCell(self, event):
wx.CallAfter(self.RefreshStructureButtons)
event.Skip()
-
+
def OnStructureElementsGridEditorShown(self, event):
- row, col = event.GetRow(), event.GetCol()
+ row, col = event.GetRow(), event.GetCol()
if self.StructureElementsTable.GetColLabelValue(col, False) == "Type":
type_menu = wx.Menu(title='')
-
+
base_menu = wx.Menu(title='')
for base_type in self.Controler.GetBaseTypes():
new_id = wx.NewId()
AppendMenu(base_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=base_type)
self.Bind(wx.EVT_MENU, self.GetElementTypeFunction(base_type), id=new_id)
type_menu.AppendMenu(wx.NewId(), _("Base Types"), base_menu)
-
+
datatype_menu = wx.Menu(title='')
for datatype in self.Controler.GetDataTypes(self.TagName, False):
new_id = wx.NewId()
AppendMenu(datatype_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=datatype)
self.Bind(wx.EVT_MENU, self.GetElementTypeFunction(datatype), id=new_id)
type_menu.AppendMenu(wx.NewId(), _("User Data Types"), datatype_menu)
-
+
new_id = wx.NewId()
AppendMenu(type_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Array"))
self.Bind(wx.EVT_MENU, self.ElementArrayTypeFunction, id=new_id)
-
+
## functionblock_menu = wx.Menu(title='')
## bodytype = self.Controler.GetEditedElementBodyType(self.TagName)
## pouname, poutype = self.Controler.GetEditedElementType(self.TagName)
@@ -661,8 +661,8 @@
def ElementArrayTypeFunction(self, event):
row = self.StructureElementsGrid.GetGridCursorRow()
- dialog = ArrayTypeDialog(self,
- self.Controler.GetDataTypes(self.TagName),
+ dialog = ArrayTypeDialog(self,
+ self.Controler.GetDataTypes(self.TagName),
self.StructureElementsTable.GetValueByName(row, "Type"))
if dialog.ShowModal() == wx.ID_OK:
self.StructureElementsTable.SetValueByName(row, "Type", dialog.GetValue())