editors/DataTypeEditor.py
branchwxPython4
changeset 3303 0ffb41625592
parent 2737 38afed869ff6
child 3449 6279ec06df98
equal deleted inserted replaced
3302:c89fc366bebd 3303:0ffb41625592
   153         self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
   153         self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
   154         self.MainSizer.AddGrowableCol(0)
   154         self.MainSizer.AddGrowableCol(0)
   155         self.MainSizer.AddGrowableRow(1)
   155         self.MainSizer.AddGrowableRow(1)
   156 
   156 
   157         top_sizer = wx.BoxSizer(wx.HORIZONTAL)
   157         top_sizer = wx.BoxSizer(wx.HORIZONTAL)
   158         self.MainSizer.AddSizer(top_sizer, border=5,
   158         self.MainSizer.Add(top_sizer, border=5,
   159                                 flag=wx.GROW | wx.TOP | wx.LEFT | wx.RIGHT)
   159                                 flag=wx.GROW | wx.TOP | wx.LEFT | wx.RIGHT)
   160 
   160 
   161         derivation_type_label = wx.StaticText(self.Editor, label=_('Derivation Type:'))
   161         derivation_type_label = wx.StaticText(self.Editor, label=_('Derivation Type:'))
   162         top_sizer.AddWindow(derivation_type_label, border=5,
   162         top_sizer.Add(derivation_type_label, border=5,
   163                             flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT)
   163                             flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT)
   164 
   164 
   165         self.DerivationType = wx.ComboBox(self.Editor,
   165         self.DerivationType = wx.ComboBox(self.Editor,
   166                                           size=wx.Size(200, -1), style=wx.CB_READONLY)
   166                                           size=wx.Size(200, -1), style=wx.CB_READONLY)
   167         self.Bind(wx.EVT_COMBOBOX, self.OnDerivationTypeChanged, self.DerivationType)
   167         self.Bind(wx.EVT_COMBOBOX, self.OnDerivationTypeChanged, self.DerivationType)
   168         top_sizer.AddWindow(self.DerivationType, border=5, flag=wx.GROW | wx.RIGHT)
   168         top_sizer.Add(self.DerivationType, border=5, flag=wx.GROW | wx.RIGHT)
   169 
   169 
   170         typeinfos_staticbox = wx.StaticBox(self.Editor, label=_('Type infos:'))
   170         typeinfos_staticbox = wx.StaticBox(self.Editor, label=_('Type infos:'))
   171         typeinfos_sizer = wx.StaticBoxSizer(typeinfos_staticbox, wx.HORIZONTAL)
   171         typeinfos_sizer = wx.StaticBoxSizer(typeinfos_staticbox, wx.HORIZONTAL)
   172         self.MainSizer.AddSizer(typeinfos_sizer, border=5,
   172         self.MainSizer.Add(typeinfos_sizer, border=5,
   173                                 flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT)
   173                                 flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT)
   174 
   174 
   175         # Panel for Directly derived data types
   175         # Panel for Directly derived data types
   176 
   176 
   177         self.DirectlyPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   177         self.DirectlyPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   178         typeinfos_sizer.AddWindow(self.DirectlyPanel, 1)
   178         typeinfos_sizer.Add(self.DirectlyPanel, 1)
   179 
   179 
   180         directly_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)
   180         directly_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)
   181 
   181 
   182         directly_basetype_label = wx.StaticText(self.DirectlyPanel,
   182         directly_basetype_label = wx.StaticText(self.DirectlyPanel,
   183                                                 label=_('Base Type:'))
   183                                                 label=_('Base Type:'))
   184         directly_panel_sizer.AddWindow(directly_basetype_label, 1, border=5,
   184         directly_panel_sizer.Add(directly_basetype_label, 1, border=5,
   185                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   185                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   186 
   186 
   187         self.DirectlyBaseType = wx.ComboBox(self.DirectlyPanel, style=wx.CB_READONLY)
   187         self.DirectlyBaseType = wx.ComboBox(self.DirectlyPanel, style=wx.CB_READONLY)
   188         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.DirectlyBaseType)
   188         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.DirectlyBaseType)
   189         directly_panel_sizer.AddWindow(self.DirectlyBaseType, 1, border=5,
   189         directly_panel_sizer.Add(self.DirectlyBaseType, 1, border=5,
   190                                        flag=wx.GROW | wx.ALL)
   190                                        flag=wx.GROW | wx.ALL)
   191 
   191 
   192         directly_initialvalue_label = wx.StaticText(self.DirectlyPanel,
   192         directly_initialvalue_label = wx.StaticText(self.DirectlyPanel,
   193                                                     label=_('Initial Value:'))
   193                                                     label=_('Initial Value:'))
   194         directly_panel_sizer.AddWindow(directly_initialvalue_label, 1, border=5,
   194         directly_panel_sizer.Add(directly_initialvalue_label, 1, border=5,
   195                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   195                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   196 
   196 
   197         self.DirectlyInitialValue = wx.TextCtrl(self.DirectlyPanel,
   197         self.DirectlyInitialValue = wx.TextCtrl(self.DirectlyPanel,
   198                                                 style=wx.TE_PROCESS_ENTER | wx.TE_RICH)
   198                                                 style=wx.TE_PROCESS_ENTER | wx.TE_RICH)
   199         self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.DirectlyInitialValue)
   199         self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.DirectlyInitialValue)
   200         directly_panel_sizer.AddWindow(self.DirectlyInitialValue, 1, border=5,
   200         directly_panel_sizer.Add(self.DirectlyInitialValue, 1, border=5,
   201                                        flag=wx.ALL)
   201                                        flag=wx.ALL)
   202 
   202 
   203         self.DirectlyPanel.SetSizer(directly_panel_sizer)
   203         self.DirectlyPanel.SetSizer(directly_panel_sizer)
   204 
   204 
   205         # Panel for Subrange data types
   205         # Panel for Subrange data types
   206 
   206 
   207         self.SubrangePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   207         self.SubrangePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   208         typeinfos_sizer.AddWindow(self.SubrangePanel, 1)
   208         typeinfos_sizer.Add(self.SubrangePanel, 1)
   209 
   209 
   210         subrange_panel_sizer = wx.GridSizer(cols=4, hgap=5, rows=3, vgap=0)
   210         subrange_panel_sizer = wx.GridSizer(cols=4, hgap=5, rows=3, vgap=0)
   211 
   211 
   212         subrange_basetype_label = wx.StaticText(self.SubrangePanel,
   212         subrange_basetype_label = wx.StaticText(self.SubrangePanel,
   213                                                 label=_('Base Type:'))
   213                                                 label=_('Base Type:'))
   214         subrange_panel_sizer.AddWindow(subrange_basetype_label, 1, border=5,
   214         subrange_panel_sizer.Add(subrange_basetype_label, 1, border=5,
   215                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   215                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   216 
   216 
   217         self.SubrangeBaseType = wx.ComboBox(self.SubrangePanel, style=wx.CB_READONLY)
   217         self.SubrangeBaseType = wx.ComboBox(self.SubrangePanel, style=wx.CB_READONLY)
   218         self.Bind(wx.EVT_COMBOBOX, self.OnSubrangeBaseTypeChanged,
   218         self.Bind(wx.EVT_COMBOBOX, self.OnSubrangeBaseTypeChanged,
   219                   self.SubrangeBaseType)
   219                   self.SubrangeBaseType)
   220         subrange_panel_sizer.AddWindow(self.SubrangeBaseType, 1, border=5,
   220         subrange_panel_sizer.Add(self.SubrangeBaseType, 1, border=5,
   221                                        flag=wx.GROW | wx.ALL)
   221                                        flag=wx.GROW | wx.ALL)
   222 
   222 
   223         subrange_initialvalue_label = wx.StaticText(self.SubrangePanel,
   223         subrange_initialvalue_label = wx.StaticText(self.SubrangePanel,
   224                                                     label=_('Initial Value:'))
   224                                                     label=_('Initial Value:'))
   225         subrange_panel_sizer.AddWindow(subrange_initialvalue_label, 1, border=5,
   225         subrange_panel_sizer.Add(subrange_initialvalue_label, 1, border=5,
   226                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   226                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   227 
   227 
   228         self.SubrangeInitialValue = CustomIntCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
   228         self.SubrangeInitialValue = CustomIntCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
   229         self.SubrangeInitialValue.Bind(CustomIntCtrl.EVT_CUSTOM_INT, self.OnInfosChanged)
   229         self.SubrangeInitialValue.Bind(CustomIntCtrl.EVT_CUSTOM_INT, self.OnInfosChanged)
   230         subrange_panel_sizer.AddWindow(self.SubrangeInitialValue, 1, border=5,
   230         subrange_panel_sizer.Add(self.SubrangeInitialValue, 1, border=5,
   231                                        flag=wx.GROW | wx.ALL)
   231                                        flag=wx.GROW | wx.ALL)
   232 
   232 
   233         subrange_minimum_label = wx.StaticText(self.SubrangePanel, label=_('Minimum:'))
   233         subrange_minimum_label = wx.StaticText(self.SubrangePanel, label=_('Minimum:'))
   234         subrange_panel_sizer.AddWindow(subrange_minimum_label, 1, border=5,
   234         subrange_panel_sizer.Add(subrange_minimum_label, 1, border=5,
   235                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   235                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   236 
   236 
   237         self.SubrangeMinimum = CustomIntCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
   237         self.SubrangeMinimum = CustomIntCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
   238         self.SubrangeMinimum.Bind(CustomIntCtrl.EVT_CUSTOM_INT, self.OnSubrangeMinimumChanged)
   238         self.SubrangeMinimum.Bind(CustomIntCtrl.EVT_CUSTOM_INT, self.OnSubrangeMinimumChanged)
   239         subrange_panel_sizer.AddWindow(self.SubrangeMinimum, 1, border=5,
   239         subrange_panel_sizer.Add(self.SubrangeMinimum, 1, border=5,
   240                                        flag=wx.GROW | wx.ALL)
   240                                        flag=wx.GROW | wx.ALL)
   241 
   241 
   242         for dummy in xrange(2):
   242         for dummy in xrange(2):
   243             subrange_panel_sizer.AddWindow(wx.Size(0, 0), 1)
   243             subrange_panel_sizer.Add(wx.Size(0, 0), 1)
   244 
   244 
   245         subrange_maximum_label = wx.StaticText(self.SubrangePanel,
   245         subrange_maximum_label = wx.StaticText(self.SubrangePanel,
   246                                                label=_('Maximum:'))
   246                                                label=_('Maximum:'))
   247         subrange_panel_sizer.AddWindow(subrange_maximum_label, 1, border=5,
   247         subrange_panel_sizer.Add(subrange_maximum_label, 1, border=5,
   248                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   248                                        flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   249 
   249 
   250         self.SubrangeMaximum = CustomIntCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
   250         self.SubrangeMaximum = CustomIntCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
   251         self.SubrangeMaximum.Bind(CustomIntCtrl.EVT_CUSTOM_INT, self.OnSubrangeMaximumChanged)
   251         self.SubrangeMaximum.Bind(CustomIntCtrl.EVT_CUSTOM_INT, self.OnSubrangeMaximumChanged)
   252 
   252 
   253         subrange_panel_sizer.AddWindow(self.SubrangeMaximum, 1, border=5,
   253         subrange_panel_sizer.Add(self.SubrangeMaximum, 1, border=5,
   254                                        flag=wx.GROW | wx.ALL)
   254                                        flag=wx.GROW | wx.ALL)
   255 
   255 
   256         self.SubrangePanel.SetSizer(subrange_panel_sizer)
   256         self.SubrangePanel.SetSizer(subrange_panel_sizer)
   257 
   257 
   258         # Panel for Enumerated data types
   258         # Panel for Enumerated data types
   259 
   259 
   260         self.EnumeratedPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   260         self.EnumeratedPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   261         typeinfos_sizer.AddWindow(self.EnumeratedPanel, 1)
   261         typeinfos_sizer.Add(self.EnumeratedPanel, 1)
   262 
   262 
   263         enumerated_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)
   263         enumerated_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)
   264 
   264 
   265         self.EnumeratedValues = CustomEditableListBox(
   265         self.EnumeratedValues = CustomEditableListBox(
   266             self.EnumeratedPanel,
   266             self.EnumeratedPanel,
   267             label=_("Values:"),
   267             label=_("Values:"),
   268             style=(wx.gizmos.EL_ALLOW_NEW |
   268             style=(wx.adv.EL_ALLOW_NEW |
   269                    wx.gizmos.EL_ALLOW_EDIT |
   269                    wx.adv.EL_ALLOW_EDIT |
   270                    wx.gizmos.EL_ALLOW_DELETE))
   270                    wx.adv.EL_ALLOW_DELETE))
   271         setattr(self.EnumeratedValues, "_OnLabelEndEdit", self.OnEnumeratedValueEndEdit)
   271         setattr(self.EnumeratedValues, "_OnLabelEndEdit", self.OnEnumeratedValueEndEdit)
   272         for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
   272         for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
   273             setattr(self.EnumeratedValues, func, self.OnEnumeratedValuesChanged)
   273             setattr(self.EnumeratedValues, func, self.OnEnumeratedValuesChanged)
   274         enumerated_panel_sizer.AddWindow(self.EnumeratedValues, 1, border=5,
   274         enumerated_panel_sizer.Add(self.EnumeratedValues, 1, border=5,
   275                                          flag=wx.GROW | wx.ALL)
   275                                          flag=wx.GROW | wx.ALL)
   276 
   276 
   277         enumerated_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL)
   277         enumerated_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL)
   278         enumerated_panel_sizer.AddSizer(enumerated_panel_rightsizer, 1)
   278         enumerated_panel_sizer.Add(enumerated_panel_rightsizer, 1)
   279 
   279 
   280         enumerated_initialvalue_label = wx.StaticText(self.EnumeratedPanel,
   280         enumerated_initialvalue_label = wx.StaticText(self.EnumeratedPanel,
   281                                                       label=_('Initial Value:'))
   281                                                       label=_('Initial Value:'))
   282         enumerated_panel_rightsizer.AddWindow(enumerated_initialvalue_label, 1,
   282         enumerated_panel_rightsizer.Add(enumerated_initialvalue_label, 1,
   283                                               border=5,
   283                                               border=5,
   284                                               flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   284                                               flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   285 
   285 
   286         self.EnumeratedInitialValue = wx.ComboBox(self.EnumeratedPanel,
   286         self.EnumeratedInitialValue = wx.ComboBox(self.EnumeratedPanel,
   287                                                   style=wx.CB_READONLY)
   287                                                   style=wx.CB_READONLY)
   288         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.EnumeratedInitialValue)
   288         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.EnumeratedInitialValue)
   289         enumerated_panel_rightsizer.AddWindow(self.EnumeratedInitialValue, 1,
   289         enumerated_panel_rightsizer.Add(self.EnumeratedInitialValue, 1,
   290                                               border=5, flag=wx.ALL)
   290                                               border=5, flag=wx.ALL)
   291 
   291 
   292         self.EnumeratedPanel.SetSizer(enumerated_panel_sizer)
   292         self.EnumeratedPanel.SetSizer(enumerated_panel_sizer)
   293 
   293 
   294         # Panel for Array data types
   294         # Panel for Array data types
   295 
   295 
   296         self.ArrayPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   296         self.ArrayPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   297         typeinfos_sizer.AddWindow(self.ArrayPanel, 1)
   297         typeinfos_sizer.Add(self.ArrayPanel, 1)
   298 
   298 
   299         array_panel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0)
   299         array_panel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0)
   300         array_panel_sizer.AddGrowableCol(0)
   300         array_panel_sizer.AddGrowableCol(0)
   301         array_panel_sizer.AddGrowableCol(1)
   301         array_panel_sizer.AddGrowableCol(1)
   302         array_panel_sizer.AddGrowableRow(1)
   302         array_panel_sizer.AddGrowableRow(1)
   303 
   303 
   304         array_panel_leftSizer = wx.BoxSizer(wx.HORIZONTAL)
   304         array_panel_leftSizer = wx.BoxSizer(wx.HORIZONTAL)
   305         array_panel_sizer.AddSizer(array_panel_leftSizer, flag=wx.GROW)
   305         array_panel_sizer.Add(array_panel_leftSizer, flag=wx.GROW)
   306 
   306 
   307         array_basetype_label = wx.StaticText(self.ArrayPanel, label=_('Base Type:'))
   307         array_basetype_label = wx.StaticText(self.ArrayPanel, label=_('Base Type:'))
   308         array_panel_leftSizer.AddWindow(array_basetype_label, 1, border=5,
   308         array_panel_leftSizer.Add(array_basetype_label, 1, border=5,
   309                                         flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   309                                         flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   310 
   310 
   311         self.ArrayBaseType = wx.ComboBox(self.ArrayPanel, style=wx.CB_READONLY)
   311         self.ArrayBaseType = wx.ComboBox(self.ArrayPanel, style=wx.CB_READONLY)
   312         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.ArrayBaseType)
   312         self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.ArrayBaseType)
   313         array_panel_leftSizer.AddWindow(self.ArrayBaseType, 1, border=5,
   313         array_panel_leftSizer.Add(self.ArrayBaseType, 1, border=5,
   314                                         flag=wx.GROW | wx.ALL)
   314                                         flag=wx.GROW | wx.ALL)
   315 
   315 
   316         array_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL)
   316         array_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL)
   317         array_panel_sizer.AddSizer(array_panel_rightsizer, flag=wx.GROW)
   317         array_panel_sizer.Add(array_panel_rightsizer, flag=wx.GROW)
   318 
   318 
   319         array_initialvalue_label = wx.StaticText(self.ArrayPanel,
   319         array_initialvalue_label = wx.StaticText(self.ArrayPanel,
   320                                                  label=_('Initial Value:'))
   320                                                  label=_('Initial Value:'))
   321         array_panel_rightsizer.AddWindow(array_initialvalue_label, 1, border=5,
   321         array_panel_rightsizer.Add(array_initialvalue_label, 1, border=5,
   322                                          flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   322                                          flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL)
   323 
   323 
   324         self.ArrayInitialValue = wx.TextCtrl(self.ArrayPanel,
   324         self.ArrayInitialValue = wx.TextCtrl(self.ArrayPanel,
   325                                              style=wx.TE_PROCESS_ENTER | wx.TE_RICH)
   325                                              style=wx.TE_PROCESS_ENTER | wx.TE_RICH)
   326         self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.ArrayInitialValue)
   326         self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.ArrayInitialValue)
   327         array_panel_rightsizer.AddWindow(self.ArrayInitialValue, 1, border=5,
   327         array_panel_rightsizer.Add(self.ArrayInitialValue, 1, border=5,
   328                                          flag=wx.ALL)
   328                                          flag=wx.ALL)
   329 
   329 
   330         self.ArrayDimensions = CustomEditableListBox(
   330         self.ArrayDimensions = CustomEditableListBox(
   331             self.ArrayPanel,
   331             self.ArrayPanel,
   332             label=_("Dimensions:"),
   332             label=_("Dimensions:"),
   333             style=(wx.gizmos.EL_ALLOW_NEW |
   333             style=(wx.adv.EL_ALLOW_NEW |
   334                    wx.gizmos.EL_ALLOW_EDIT |
   334                    wx.adv.EL_ALLOW_EDIT |
   335                    wx.gizmos.EL_ALLOW_DELETE))
   335                    wx.adv.EL_ALLOW_DELETE))
   336         for func in ["_OnLabelEndEdit", "_OnAddButton", "_OnDelButton",
   336         for func in ["_OnLabelEndEdit", "_OnAddButton", "_OnDelButton",
   337                      "_OnUpButton", "_OnDownButton"]:
   337                      "_OnUpButton", "_OnDownButton"]:
   338             setattr(self.ArrayDimensions, func, self.OnDimensionsChanged)
   338             setattr(self.ArrayDimensions, func, self.OnDimensionsChanged)
   339         array_panel_sizer.AddWindow(self.ArrayDimensions, 0, border=5,
   339         array_panel_sizer.Add(self.ArrayDimensions, 0, border=5,
   340                                     flag=wx.GROW | wx.ALL)
   340                                     flag=wx.GROW | wx.ALL)
   341 
   341 
   342         self.ArrayPanel.SetSizer(array_panel_sizer)
   342         self.ArrayPanel.SetSizer(array_panel_sizer)
   343 
   343 
   344         # Panel for Structure data types
   344         # Panel for Structure data types
   345 
   345 
   346         self.StructurePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   346         self.StructurePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
   347         typeinfos_sizer.AddWindow(self.StructurePanel, 1)
   347         typeinfos_sizer.Add(self.StructurePanel, 1)
   348 
   348 
   349         structure_panel_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
   349         structure_panel_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
   350         structure_panel_sizer.AddGrowableCol(0)
   350         structure_panel_sizer.AddGrowableCol(0)
   351         structure_panel_sizer.AddGrowableRow(1)
   351         structure_panel_sizer.AddGrowableRow(1)
   352 
   352 
   353         structure_button_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
   353         structure_button_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
   354         structure_button_sizer.AddGrowableCol(0)
   354         structure_button_sizer.AddGrowableCol(0)
   355         structure_button_sizer.AddGrowableRow(0)
   355         structure_button_sizer.AddGrowableRow(0)
   356         structure_panel_sizer.AddSizer(structure_button_sizer, 0, border=5,
   356         structure_panel_sizer.Add(structure_button_sizer, 0, border=5,
   357                                        flag=wx.ALL | wx.GROW)
   357                                        flag=wx.ALL | wx.GROW)
   358 
   358 
   359         structure_elements_label = wx.StaticText(self.StructurePanel,
   359         structure_elements_label = wx.StaticText(self.StructurePanel,
   360                                                  label=_('Elements :'))
   360                                                  label=_('Elements :'))
   361         structure_button_sizer.AddWindow(structure_elements_label, flag=wx.ALIGN_BOTTOM)
   361         structure_button_sizer.Add(structure_elements_label, flag=wx.ALIGN_BOTTOM)
   362 
   362 
   363         for name, bitmap, help in [
   363         for name, bitmap, help in [
   364                 ("StructureAddButton", "add_element", _("Add element")),
   364                 ("StructureAddButton", "add_element", _("Add element")),
   365                 ("StructureDeleteButton", "remove_element", _("Remove element")),
   365                 ("StructureDeleteButton", "remove_element", _("Remove element")),
   366                 ("StructureUpButton", "up", _("Move element up")),
   366                 ("StructureUpButton", "up", _("Move element up")),
   367                 ("StructureDownButton", "down", _("Move element down"))]:
   367                 ("StructureDownButton", "down", _("Move element down"))]:
   368             button = wx.lib.buttons.GenBitmapButton(self.StructurePanel,
   368             button = wx.lib.buttons.GenBitmapButton(self.StructurePanel,
   369                                                     bitmap=GetBitmap(bitmap),
   369                                                     bitmap=GetBitmap(bitmap),
   370                                                     size=wx.Size(28, 28),
   370                                                     size=wx.Size(28, 28),
   371                                                     style=wx.NO_BORDER)
   371                                                     style=wx.NO_BORDER)
   372             button.SetToolTipString(help)
   372             button.SetToolTip(help)
   373             setattr(self, name, button)
   373             setattr(self, name, button)
   374             structure_button_sizer.AddWindow(button)
   374             structure_button_sizer.Add(button)
   375 
   375 
   376         self.StructureElementsGrid = CustomGrid(self.StructurePanel,
   376         self.StructureElementsGrid = CustomGrid(self.StructurePanel,
   377                                                 size=wx.Size(0, 150), style=wx.VSCROLL)
   377                                                 size=wx.Size(0, 150), style=wx.VSCROLL)
   378         self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
   378         self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGING,
   379                                         self.OnStructureElementsGridCellChange)
   379                                         self.OnStructureElementsGridCellChange)
   380         self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN,
   380         self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN,
   381                                         self.OnStructureElementsGridEditorShown)
   381                                         self.OnStructureElementsGridEditorShown)
   382         structure_panel_sizer.AddWindow(self.StructureElementsGrid, flag=wx.GROW)
   382         structure_panel_sizer.Add(self.StructureElementsGrid, flag=wx.GROW)
   383 
   383 
   384         self.StructurePanel.SetSizer(structure_panel_sizer)
   384         self.StructurePanel.SetSizer(structure_panel_sizer)
   385 
   385 
   386         self.Editor.SetSizer(self.MainSizer)
   386         self.Editor.SetSizer(self.MainSizer)
   387 
   387 
   645 
   645 
   646             new_entry = AppendMenu(type_menu, help='', kind=wx.ITEM_NORMAL, text=_("Array"))
   646             new_entry = AppendMenu(type_menu, help='', kind=wx.ITEM_NORMAL, text=_("Array"))
   647             self.Bind(wx.EVT_MENU, self.ElementArrayTypeFunction, new_entry)
   647             self.Bind(wx.EVT_MENU, self.ElementArrayTypeFunction, new_entry)
   648 
   648 
   649             rect = self.StructureElementsGrid.BlockToDeviceRect((row, col), (row, col))
   649             rect = self.StructureElementsGrid.BlockToDeviceRect((row, col), (row, col))
   650             self.StructureElementsGrid.PopupMenuXY(type_menu, rect.x + rect.width, rect.y + self.StructureElementsGrid.GetColLabelSize())
   650             self.StructureElementsGrid.PopupMenu(type_menu, rect.x + rect.width, rect.y + self.StructureElementsGrid.GetColLabelSize())
   651             type_menu.Destroy()
   651             type_menu.Destroy()
   652             event.Veto()
   652             event.Veto()
   653         else:
   653         else:
   654             event.Skip()
   654             event.Skip()
   655 
   655 
   784                 control.SetForegroundColour(wx.NullColour)
   784                 control.SetForegroundColour(wx.NullColour)
   785             elif isinstance(control, wx.TextCtrl):
   785             elif isinstance(control, wx.TextCtrl):
   786                 value = control.GetValueStr() if isinstance(control, CustomIntCtrl) else \
   786                 value = control.GetValueStr() if isinstance(control, CustomIntCtrl) else \
   787                         control.GetValue()
   787                         control.GetValue()
   788                 control.SetStyle(0, len(value), wx.TextAttr(wx.NullColour))
   788                 control.SetStyle(0, len(value), wx.TextAttr(wx.NullColour))
   789             elif isinstance(control, wx.gizmos.EditableListBox):
   789             elif isinstance(control, wx.adv.EditableListBox):
   790                 listctrl = control.GetListCtrl()
   790                 listctrl = control.GetListCtrl()
   791                 for i in xrange(listctrl.GetItemCount()):
   791                 for i in xrange(listctrl.GetItemCount()):
   792                     listctrl.SetItemBackgroundColour(i, wx.NullColour)
   792                     listctrl.SetItemBackgroundColour(i, wx.NullColour)
   793                     listctrl.SetItemTextColour(i, wx.NullColour)
   793                     listctrl.SetItemTextColour(i, wx.NullColour)
   794         self.StructureElementsTable.ClearHighlights(highlight_type)
   794         self.StructureElementsTable.ClearHighlights(highlight_type)
   809                     if isinstance(control, (wx.ComboBox, wx.SpinCtrl)):
   809                     if isinstance(control, (wx.ComboBox, wx.SpinCtrl)):
   810                         control.SetBackgroundColour(highlight_type[0])
   810                         control.SetBackgroundColour(highlight_type[0])
   811                         control.SetForegroundColour(highlight_type[1])
   811                         control.SetForegroundColour(highlight_type[1])
   812                     elif isinstance(control, wx.TextCtrl):
   812                     elif isinstance(control, wx.TextCtrl):
   813                         control.SetStyle(start[1], end[1] + 1, wx.TextAttr(highlight_type[1], highlight_type[0]))
   813                         control.SetStyle(start[1], end[1] + 1, wx.TextAttr(highlight_type[1], highlight_type[0]))
   814                     elif isinstance(control, wx.gizmos.EditableListBox):
   814                     elif isinstance(control, wx.adv.EditableListBox):
   815                         listctrl = control.GetListCtrl()
   815                         listctrl = control.GetListCtrl()
   816                         listctrl.SetItemBackgroundColour(infos[1], highlight_type[0])
   816                         listctrl.SetItemBackgroundColour(infos[1], highlight_type[0])
   817                         listctrl.SetItemTextColour(infos[1], highlight_type[1])
   817                         listctrl.SetItemTextColour(infos[1], highlight_type[1])
   818                         listctrl.Select(listctrl.FocusedItem, False)
   818                         listctrl.Select(listctrl.FocusedItem, False)