DataTypeEditor.py
changeset 391 07447ee3538e
parent 389 6a72016d721a
child 407 0a324a874981
child 427 22d16c457d87
--- a/DataTypeEditor.py	Fri Jul 24 12:49:57 2009 +0200
+++ b/DataTypeEditor.py	Fri Jul 24 17:12:59 2009 +0200
@@ -41,6 +41,10 @@
 #                            Structure Elements Table
 #-------------------------------------------------------------------------------
 
+def GetElementsTableColnames():
+    _ = lambda x : x
+    return ["#", _("Name"), _("Type"), _("Initial Value")]
+
 class ElementsTable(wx.grid.PyGridTableBase):
     
     """
@@ -66,23 +70,25 @@
     def GetNumberRows(self):
         return len(self.data)
 
-    def GetColLabelValue(self, col):
+    def GetColLabelValue(self, col, translate=True):
         if col < len(self.colnames):
+            if translate:
+                return _(self.colnames[col])
             return self.colnames[col]
 
-    def GetRowLabelValues(self, row):
+    def GetRowLabelValues(self, row, translate=True):
         return row
 
     def GetValue(self, row, col):
         if row < self.GetNumberRows():
             if col == 0:
                 return row + 1
-            name = str(self.data[row].get(self.GetColLabelValue(col), ""))
+            name = str(self.data[row].get(self.GetColLabelValue(col, False), ""))
             return name
     
     def SetValue(self, row, col, value):
         if col < len(self.colnames):
-            colname = self.GetColLabelValue(col)
+            colname = self.GetColLabelValue(col, False)
             if colname == "Name":
                 self.old_value = self.data[row][colname]
             self.data[row][colname] = value
@@ -140,13 +146,11 @@
         Otherwise default to the default renderer.
         """
         
-        typelist = None
-        accesslist = None
         for row in range(self.GetNumberRows()):
             for col in range(self.GetNumberCols()):
                 editor = None
                 renderer = None
-                colname = self.GetColLabelValue(col)
+                colname = self.GetColLabelValue(col, False)
                 if col != 0:
                     grid.SetReadOnly(row, col, False)
                     if colname == "Name":
@@ -227,6 +231,11 @@
  ID_DATATYPEEDITORSTATICTEXT11, 
 ] = [wx.NewId() for _init_ctrls in range(35)]
 
+def GetDatatypeTypes():
+    _ = lambda x : x
+    return [_("Directly"), _("Subrange"), _("Enumerated"), _("Array"), _("Structure")]
+DATATYPE_TYPES_DICT = dict([(_(datatype), datatype) for datatype in GetDatatypeTypes()])
+
 class DataTypeEditor(wx.Panel):
     
     def _init_coll_MainSizer_Items(self, parent):
@@ -238,8 +247,8 @@
         parent.AddGrowableRow(1)
 
     def _init_coll_TopSizer_Items(self, parent):
-        parent.AddWindow(self.staticText1, 0, border=5, flag=wx.GROW|wx.LEFT)
-        parent.AddWindow(self.DerivationType, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText1, 0, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT)
+        parent.AddWindow(self.DerivationType, 0, border=5, flag=wx.GROW|wx.RIGHT)
 
     def _init_coll_TypeInfosSizer_Items(self, parent):
         parent.AddWindow(self.DirectlyPanel, 1, border=0, flag=wx.ALL)
@@ -249,31 +258,34 @@
         parent.AddWindow(self.StructurePanel, 1, border=0, flag=wx.GROW|wx.ALL)
 
     def _init_coll_DirectlyPanelSizer_Items(self, parent):
-        parent.AddWindow(self.staticText2, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.staticText2, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
         parent.AddWindow(self.DirectlyBaseType, 1, border=5, flag=wx.GROW|wx.ALL)
-        parent.AddWindow(self.staticText3, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.staticText3, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
         parent.AddWindow(self.DirectlyInitialValue, 1, border=5, flag=wx.GROW|wx.ALL)
 
     def _init_coll_SubrangePanelSizer_Items(self, parent):
-        parent.AddWindow(self.staticText4, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.staticText4, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
         parent.AddWindow(self.SubrangeBaseType, 1, border=5, flag=wx.GROW|wx.ALL)
-        parent.AddWindow(self.staticText5, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.staticText5, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
         parent.AddWindow(self.SubrangeInitialValue, 1, border=5, flag=wx.GROW|wx.ALL)
-        parent.AddWindow(self.staticText6, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.staticText6, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
         parent.AddWindow(self.SubrangeMinimum, 1, border=5, flag=wx.GROW|wx.ALL)
         parent.AddWindow(wx.Size(0, 0), 1, border=5, flag=wx.GROW|wx.ALL)
         parent.AddWindow(wx.Size(0, 0), 1, border=5, flag=wx.GROW|wx.ALL)
-        parent.AddWindow(self.staticText7, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.staticText7, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
         parent.AddWindow(self.SubrangeMaximum, 1, border=5, flag=wx.GROW|wx.ALL)
         
     def _init_coll_EnumeratedPanelSizer_Items(self, parent):
-        parent.AddWindow(self.EnumeratedValues, 2, border=5, flag=wx.GROW|wx.ALL)
-        parent.AddWindow(self.staticText8, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.EnumeratedValues, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddSizer(self.EnumeratedPanelRightSizer, 1, border=0, flag=0)
+        
+    def _init_coll_EnumeratedPanelRightSizer_Items(self, parent):
+        parent.AddWindow(self.staticText8, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
         parent.AddWindow(self.EnumeratedInitialValue, 1, border=5, flag=wx.ALL)
 
     def _init_coll_ArrayPanelSizer_Items(self, parent):
         parent.AddSizer(self.ArrayPanelLeftSizer, 0, border=0, flag=wx.GROW)
-        parent.AddSizer(self.ArrayPanelRightSizer, 0, border=0, flag=wx.GROW)
+        parent.AddSizer(self.ArrayPanelRightSizer, 0, border=0, flag=0)
         parent.AddWindow(self.ArrayDimensions, 0, border=5, flag=wx.GROW|wx.ALL)
         
     def _init_coll_ArrayPanelSizer_Growables(self, parent):
@@ -282,15 +294,15 @@
         parent.AddGrowableRow(1)
 
     def _init_coll_ArrayPanelLeftSizer_Items(self, parent):
-        parent.AddWindow(self.staticText9, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.staticText9, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
         parent.AddWindow(self.ArrayBaseType, 1, border=5, flag=wx.GROW|wx.ALL)
     
     def _init_coll_ArrayPanelRightSizer_Items(self, parent):
-        parent.AddWindow(self.staticText10, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.staticText10, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
         parent.AddWindow(self.ArrayInitialValue, 1, border=5, flag=wx.GROW|wx.ALL)    
 
     def _init_coll_StructurePanelSizer_Items(self, parent):
-        parent.AddWindow(self.staticText11, 0, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.staticText11, 0, border=5, flag=wx.ALL)
         parent.AddWindow(self.StructureElementsGrid, 0, border=0, flag=wx.GROW)
         parent.AddSizer(self.StructurePanelButtonSizer, 0, border=0, flag=wx.ALIGN_RIGHT)
         
@@ -299,22 +311,23 @@
         parent.AddGrowableRow(1)
 
     def _init_coll_StructurePanelButtonSizer_Items(self, parent):
-        parent.AddWindow(self.StructureAddButton, 1, border=5, flag=wx.GROW|wx.ALL)
-        parent.AddWindow(self.StructureDeleteButton, 1, border=5, flag=wx.GROW|wx.ALL)
-        parent.AddWindow(self.StructureUpButton, 1, border=5, flag=wx.GROW|wx.ALL)
-        parent.AddWindow(self.StructureDownButton, 1, border=5, flag=wx.GROW|wx.ALL)
+        parent.AddWindow(self.StructureAddButton, 0, border=5, flag=wx.ALL)
+        parent.AddWindow(self.StructureDeleteButton, 0, border=5, flag=wx.ALL)
+        parent.AddWindow(self.StructureUpButton, 0, border=5, flag=wx.ALL)
+        parent.AddWindow(self.StructureDownButton, 0, border=5, flag=wx.ALL)
     
     def _init_sizers(self):
         self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
         self.TopSizer = wx.BoxSizer(wx.HORIZONTAL)
         self.TypeInfosSizer = wx.StaticBoxSizer(self.staticbox, wx.HORIZONTAL)
         self.DirectlyPanelSizer = wx.BoxSizer(wx.HORIZONTAL)
-        self.SubrangePanelSizer = wx.GridSizer(cols=4, hgap=0, rows=3, vgap=0)
+        self.SubrangePanelSizer = wx.GridSizer(cols=4, hgap=5, rows=3, vgap=0)
         self.EnumeratedPanelSizer = wx.BoxSizer(wx.HORIZONTAL)
-        self.ArrayPanelSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=2, vgap=0)
+        self.EnumeratedPanelRightSizer = wx.BoxSizer(wx.HORIZONTAL)
+        self.ArrayPanelSizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0)
         self.ArrayPanelLeftSizer = wx.BoxSizer(wx.HORIZONTAL)
         self.ArrayPanelRightSizer = wx.BoxSizer(wx.HORIZONTAL)
-        self.StructurePanelSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=0)
+        self.StructurePanelSizer = wx.FlexGridSizer(cols=1, hgap=5, rows=3, vgap=0)
         self.StructurePanelButtonSizer = wx.BoxSizer(wx.HORIZONTAL)
         self._init_coll_MainSizer_Items(self.MainSizer)
         self._init_coll_MainSizer_Growables(self.MainSizer)
@@ -323,6 +336,7 @@
         self._init_coll_DirectlyPanelSizer_Items(self.DirectlyPanelSizer)
         self._init_coll_SubrangePanelSizer_Items(self.SubrangePanelSizer)
         self._init_coll_EnumeratedPanelSizer_Items(self.EnumeratedPanelSizer)
+        self._init_coll_EnumeratedPanelRightSizer_Items(self.EnumeratedPanelRightSizer)
         self._init_coll_ArrayPanelSizer_Items(self.ArrayPanelSizer)
         self._init_coll_ArrayPanelSizer_Growables(self.ArrayPanelSizer)
         self._init_coll_ArrayPanelLeftSizer_Items(self.ArrayPanelLeftSizer)
@@ -343,12 +357,12 @@
               size=wx.Size(0, 0), style=wx.SUNKEN_BORDER)
 
         self.staticbox = wx.StaticBox(id=ID_DATATYPEEDITORSTATICBOX,
-              label='Type infos:', name='staticBox1', parent=self,
-              pos=wx.Point(0, 0), size=wx.Size(10, 0), style=0)
+              label=_('Type infos:'), name='staticBox1', parent=self,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.staticText1 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT1,
-              label='Derivation Type:', name='staticText1', parent=self,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Derivation Type:'), name='staticText1', parent=self,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.DerivationType = wx.ComboBox(id=ID_DATATYPEEDITORDERIVATIONTYPE,
               name='DerivationType', parent=self, pos=wx.Point(0, 0),
@@ -362,8 +376,8 @@
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
 
         self.staticText2 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT2,
-              label='Base Type:', name='staticText2', parent=self.DirectlyPanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Base Type:'), name='staticText2', parent=self.DirectlyPanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.DirectlyBaseType = wx.ComboBox(id=ID_DATATYPEEDITORDIRECTLYBASETYPE, 
               name='DirectlyBaseType', parent=self.DirectlyPanel, pos=wx.Point(0, 0),
@@ -371,8 +385,8 @@
         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORDIRECTLYBASETYPE)
 
         self.staticText3 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT3,
-              label='Initial Value:', name='staticText3', parent=self.DirectlyPanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Initial Value:'), name='staticText3', parent=self.DirectlyPanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.DirectlyInitialValue = wx.TextCtrl(id=ID_DATATYPEEDITORDIRECTLYINITIALVALUE, 
               name='DirectlyInitialValue', parent=self.DirectlyPanel, pos=wx.Point(0, 0),
@@ -386,8 +400,8 @@
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
 
         self.staticText4 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT4,
-              label='Base Type:', name='staticText4', parent=self.SubrangePanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Base Type:'), name='staticText4', parent=self.SubrangePanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.SubrangeBaseType = wx.ComboBox(id=ID_DATATYPEEDITORSUBRANGEBASETYPE, 
               name='SubrangeBaseType', parent=self.SubrangePanel, pos=wx.Point(0, 0),
@@ -395,8 +409,8 @@
         self.Bind(wx.EVT_COMBOBOX, self.OnSubrangeBaseTypeChanged, id=ID_DATATYPEEDITORSUBRANGEBASETYPE)
 
         self.staticText5 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT5,
-              label='Initial Value:', name='staticText5', parent=self.SubrangePanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Initial Value:'), name='staticText5', parent=self.SubrangePanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.SubrangeInitialValue = wx.SpinCtrl(id=ID_DATATYPEEDITORSUBRANGEINITIALVALUE, 
               name='SubrangeInitialValue', parent=self.SubrangePanel, pos=wx.Point(0, 0),
@@ -404,8 +418,8 @@
         self.Bind(wx.EVT_SPINCTRL, self.OnInfosChanged, id=ID_DATATYPEEDITORSUBRANGEINITIALVALUE)
 
         self.staticText6 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT6,
-              label='Minimum:', name='staticText6', parent=self.SubrangePanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Minimum:'), name='staticText6', parent=self.SubrangePanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.SubrangeMinimum = wx.SpinCtrl(id=ID_DATATYPEEDITORSUBRANGEMINIMUM, 
               name='SubrangeMinimum', parent=self.SubrangePanel, pos=wx.Point(0, 0),
@@ -413,8 +427,8 @@
         self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMinimumChanged, id=ID_DATATYPEEDITORSUBRANGEMINIMUM)
 
         self.staticText7 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT7,
-              label='Maximum:', name='staticText7', parent=self.SubrangePanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Maximum:'), name='staticText7', parent=self.SubrangePanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.SubrangeMaximum = wx.SpinCtrl(id=ID_DATATYPEEDITORSUBRANGEMAXIMUM, 
               name='SubrangeMaximum', parent=self.SubrangePanel, pos=wx.Point(0, 0),
@@ -428,17 +442,26 @@
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
 
         self.EnumeratedValues = wx.gizmos.EditableListBox(id=ID_DATATYPEEDITORENUMERATEDVALUES, 
-              name='EnumeratedValues', parent=self.EnumeratedPanel, label="Values:", pos=wx.Point(0, 0),
+              name='EnumeratedValues', parent=self.EnumeratedPanel, label=_("Values:"), pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
         self.EnumeratedValues.GetListCtrl().Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnEnumeratedValueEndEdit)
-        self.EnumeratedValues.GetNewButton().Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
-        self.EnumeratedValues.GetDelButton().Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
-        self.EnumeratedValues.GetUpButton().Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
-        self.EnumeratedValues.GetDownButton().Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
+        self.EnumeratedValues.GetEditButton().SetToolTipString(_("Edit item"))
+        new_button = self.EnumeratedValues.GetNewButton()
+        new_button.SetToolTipString(_("New item"))
+        new_button.Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
+        del_button = self.EnumeratedValues.GetDelButton()
+        del_button.SetToolTipString(_("Delete item"))
+        del_button.Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
+        up_button = self.EnumeratedValues.GetUpButton()
+        up_button.SetToolTipString(_("Move up"))
+        up_button.Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
+        down_button = self.EnumeratedValues.GetDownButton()
+        down_button.SetToolTipString(_("Move down"))
+        down_button.Bind(wx.EVT_BUTTON, self.OnEnumeratedValuesChanged)
         
         self.staticText8 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT8,
-              label='Initial Value:', name='staticText8', parent=self.EnumeratedPanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Initial Value:'), name='staticText8', parent=self.EnumeratedPanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.EnumeratedInitialValue = wx.ComboBox(id=ID_DATATYPEEDITORENUMERATEDINITIALVALUE, 
               name='EnumeratedInitialValue', parent=self.EnumeratedPanel, pos=wx.Point(0, 0),
@@ -452,8 +475,8 @@
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
 
         self.staticText9 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT9,
-              label='Base Type:', name='staticText9', parent=self.ArrayPanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Base Type:'), name='staticText9', parent=self.ArrayPanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.ArrayBaseType = wx.ComboBox(id=ID_DATATYPEEDITORARRAYBASETYPE, 
               name='SubrangeBaseType', parent=self.ArrayPanel, pos=wx.Point(0, 0),
@@ -461,17 +484,26 @@
         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORARRAYBASETYPE)
 
         self.ArrayDimensions = wx.gizmos.EditableListBox(id=ID_DATATYPEEDITORARRAYDIMENSIONS, 
-              name='ArrayDimensions', parent=self.ArrayPanel, label="Dimensions:", pos=wx.Point(0, 0),
+              name='ArrayDimensions', parent=self.ArrayPanel, label=_("Dimensions:"), pos=wx.Point(0, 0),
               size=wx.Size(0, 24), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
         self.ArrayDimensions.GetListCtrl().Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnDimensionsChanged)
-        self.ArrayDimensions.GetNewButton().Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
-        self.ArrayDimensions.GetDelButton().Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
-        self.ArrayDimensions.GetUpButton().Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
-        self.ArrayDimensions.GetDownButton().Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
+        self.ArrayDimensions.GetEditButton().SetToolTipString(_("Edit item"))
+        new_button = self.ArrayDimensions.GetNewButton()
+        new_button.SetToolTipString(_("New item"))
+        new_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
+        del_button = self.ArrayDimensions.GetDelButton()
+        del_button.SetToolTipString(_("Delete item"))
+        del_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
+        up_button = self.ArrayDimensions.GetUpButton()
+        up_button.SetToolTipString(_("Move up"))
+        up_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
+        down_button = self.ArrayDimensions.GetDownButton()
+        down_button.SetToolTipString(_("Move down"))
+        down_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
 
         self.staticText10 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT10,
-              label='Initial Value:', name='staticText10', parent=self.ArrayPanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Initial Value:'), name='staticText10', parent=self.ArrayPanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.ArrayInitialValue = wx.TextCtrl(id=ID_DATATYPEEDITORARRAYINITIALVALUE, 
               name='ArrayInitialValue', parent=self.ArrayPanel, pos=wx.Point(0, 0),
@@ -485,8 +517,8 @@
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
         
         self.staticText11 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT11,
-              label='Elements :', name='staticText11', parent=self.StructurePanel,
-              pos=wx.Point(0, 0), size=wx.Size(150, 17), style=0)
+              label=_('Elements :'), name='staticText11', parent=self.StructurePanel,
+              pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
 
         self.StructureElementsGrid = wx.grid.Grid(id=ID_DATATYPEEDITORSTRUCTUREELEMENTSGRID,
               name='StructureElementsGrid', parent=self.StructurePanel, pos=wx.Point(0, 0), 
@@ -504,14 +536,14 @@
             wx.grid.EVT_GRID_CELL_CHANGE(self.StructureElementsGrid, self.OnStructureElementsGridCellChange)
             wx.grid.EVT_GRID_EDITOR_SHOWN(self.StructureElementsGrid, self.OnStructureElementsGridEditorShown)
 
-        self.StructureAddButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREADDBUTTON, label='Add',
+        self.StructureAddButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREADDBUTTON, label=_('Add'),
               name='StructureAddButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
-              size=wx.Size(72, 32), style=0)
+              size=wx.DefaultSize, style=0)
         self.Bind(wx.EVT_BUTTON, self.OnStructureAddButton, id=ID_DATATYPEEDITORSTRUCTUREADDBUTTON)
 
-        self.StructureDeleteButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON, label='Delete',
+        self.StructureDeleteButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON, label=_('Delete'),
               name='StructureDeleteButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
-              size=wx.Size(72, 32), style=0)
+              size=wx.DefaultSize, style=0)
         self.Bind(wx.EVT_BUTTON, self.OnStructureDeleteButton, id=ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON)
 
         self.StructureUpButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREUPBUTTON, label='^',
@@ -530,7 +562,7 @@
         self._init_ctrls(parent)
         
         self.StructureElementDefaultValue = {"Name" : "", "Type" : "INT", "Initial Value" : ""}
-        self.StructureElementsTable = ElementsTable(self, [], ["#", "Name", "Type", "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]
         
@@ -540,13 +572,11 @@
             attr = wx.grid.GridCellAttr()
             attr.SetAlignment(self.StructureColAlignements[col], wx.ALIGN_CENTRE)
             self.StructureElementsGrid.SetColAttr(col, attr)
-            self.StructureElementsGrid.SetColSize(col, self.StructureColSizes[col])
-        
-        self.DerivationType.Append("Directly")
-        self.DerivationType.Append("Subrange")
-        self.DerivationType.Append("Enumerated")
-        self.DerivationType.Append("Array")
-        self.DerivationType.Append("Structure")
+            self.StructureElementsGrid.SetColMinimalWidth(col, self.StructureColSizes[col])
+            self.StructureElementsGrid.AutoSizeColumn(col, False)
+        
+        for datatype in GetDatatypeTypes():
+            self.DerivationType.Append(_(datatype))
         self.SubrangePanel.Hide()
         self.EnumeratedPanel.Hide()
         self.ArrayPanel.Hide()
@@ -590,7 +620,8 @@
         self.RefreshBoundsRange()
         type_infos = self.Controler.GetDataTypeInfos(self.TagName)
         if type_infos is not None:
-            self.DerivationType.SetStringSelection(type_infos["type"])
+            datatype = type_infos["type"]
+            self.DerivationType.SetStringSelection(_(datatype))
             if type_infos["type"] == "Directly":
                 self.DirectlyBaseType.SetStringSelection(type_infos["base_type"])
                 self.DirectlyInitialValue.SetValue(type_infos["initial"])
@@ -663,12 +694,12 @@
         index = event.GetIndex()
         if index >= len(values) or values[index].upper() != text.upper():
             if text.upper() in [value.upper() for value in values]:
-                message = wx.MessageDialog(self, "\"%s\" value already defined!"%text, "Error", wx.OK|wx.ICON_ERROR)
+                message = wx.MessageDialog(self, _("\"%s\" value already defined!")%text, _("Error"), wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
                 event.Veto()
             elif text.upper() in IEC_KEYWORDS:
-                message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%text, "Error", wx.OK|wx.ICON_ERROR)
+                message = wx.MessageDialog(self, _("\"%s\" is a keyword. It can't be used!")%text, _("Error"), wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
             else:
@@ -723,12 +754,12 @@
         value = self.StructureElementsTable.GetValue(row, col)
         if colname == "Name":
             if not TestIdentifier(value):
-                message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%value, "Error", wx.OK|wx.ICON_ERROR)
+                message = wx.MessageDialog(self, _("\"%s\" is not a valid identifier!")%value, _("Error"), wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
                 event.Veto()
             elif value.upper() in IEC_KEYWORDS:
-                message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%value, "Error", wx.OK|wx.ICON_ERROR)
+                message = wx.MessageDialog(self, _("\"%s\" is a keyword. It can't be used!")%value, _("Error"), wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
                 event.Veto()
@@ -738,7 +769,7 @@
 ##                message.Destroy()
 ##                event.Veto()
             elif value.upper() in [var["Name"].upper() for idx, var in enumerate(self.StructureElementsTable.GetData()) if idx != row]:
-                message = wx.MessageDialog(self, "A element with \"%s\" as name exists in this structure!"%value, "Error", wx.OK|wx.ICON_ERROR)
+                message = wx.MessageDialog(self, _("A element with \"%s\" as name exists in this structure!")%value, _("Error"), wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
                 event.Veto()
@@ -764,13 +795,13 @@
                 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)
+            type_menu.AppendMenu(wx.NewId(), _("Base Types"), base_menu)
             datatype_menu = wx.Menu(title='')
             for datatype in self.Controler.GetDataTypes(self.TagName, False, self.ParentWindow.Debug):
                 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)
+            type_menu.AppendMenu(wx.NewId(), _("User Data Types"), datatype_menu)
 ##            functionblock_menu = wx.Menu(title='')
 ##            bodytype = self.Controler.GetEditedElementBodyType(self.TagName, self.ParentWindow.Debug)
 ##            pouname, poutype = self.Controler.GetEditedElementType(self.TagName, self.ParentWindow.Debug)
@@ -779,7 +810,7 @@
 ##                    new_id = wx.NewId()
 ##                    AppendMenu(functionblock_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=functionblock_type)
 ##                    self.Bind(wx.EVT_MENU, self.GetVariableTypeFunction(functionblock_type), id=new_id)
-##                type_menu.AppendMenu(wx.NewId(), "Function Block Types", functionblock_menu)
+##                type_menu.AppendMenu(wx.NewId(), _("Function Block Types"), functionblock_menu)
             rect = self.StructureElementsGrid.BlockToDeviceRect((row, col), (row, col))
             self.StructureElementsGrid.PopupMenuXY(type_menu, rect.x + rect.width, rect.y + self.StructureElementsGrid.GetColLabelSize())
             event.Veto()
@@ -796,7 +827,7 @@
         return ElementTypeFunction
 
     def RefreshDisplayedInfos(self):
-        selected = self.DerivationType.GetStringSelection()
+        selected = DATATYPE_TYPES_DICT[self.DerivationType.GetStringSelection()]
         if selected != self.CurrentPanel:
             if self.CurrentPanel == "Directly":
                 self.DirectlyPanel.Hide()
@@ -842,7 +873,7 @@
         self.SubrangeInitialValue.SetRange(self.SubrangeMinimum.GetValue(), self.SubrangeMaximum.GetValue())
 
     def RefreshTypeInfos(self):
-        selected = self.DerivationType.GetStringSelection()
+        selected = DATATYPE_TYPES_DICT[self.DerivationType.GetStringSelection()]
         infos = {"type" : selected}
         if selected == "Directly":
             infos["base_type"] = self.DirectlyBaseType.GetStringSelection()
@@ -865,14 +896,14 @@
             for dimensions in self.ArrayDimensions.GetStrings():
                 result = DIMENSION_MODEL.match(dimensions)
                 if result is None:
-                    message = wx.MessageDialog(self, "\"%s\" value isn't a valid array dimension!"%dimensions, "Error", wx.OK|wx.ICON_ERROR)
+                    message = wx.MessageDialog(self, _("\"%s\" value isn't a valid array dimension!")%dimensions, _("Error"), wx.OK|wx.ICON_ERROR)
                     message.ShowModal()
                     message.Destroy()
                     self.RefreshView()
                     return
                 bounds = result.groups()
                 if bounds[0] >= bounds[1]:
-                    message = wx.MessageDialog(self, "\"%s\" value isn't a valid array dimension!\nRight value must be greater than left value."%dimensions, "Error", wx.OK|wx.ICON_ERROR)
+                    message = wx.MessageDialog(self, _("\"%s\" value isn't a valid array dimension!\nRight value must be greater than left value.")%dimensions, _("Error"), wx.OK|wx.ICON_ERROR)
                     message.ShowModal()
                     message.Destroy()
                     self.RefreshView()