DataTypeEditor.py
changeset 610 430d029beed6
parent 609 768820a948e2
child 636 44978a2b9703
equal deleted inserted replaced
609:768820a948e2 610:430d029beed6
   361               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   361               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   362 
   362 
   363         self.EnumeratedValues = CustomEditableListBox(id=ID_DATATYPEEDITORENUMERATEDVALUES, 
   363         self.EnumeratedValues = CustomEditableListBox(id=ID_DATATYPEEDITORENUMERATEDVALUES, 
   364               name='EnumeratedValues', parent=self.EnumeratedPanel, label=_("Values:"), pos=wx.Point(0, 0),
   364               name='EnumeratedValues', parent=self.EnumeratedPanel, label=_("Values:"), pos=wx.Point(0, 0),
   365               size=wx.Size(0, 0), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
   365               size=wx.Size(0, 0), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
   366         self.EnumeratedValues.GetListCtrl().Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnEnumeratedValuesChanged)
   366         self.EnumeratedValues.GetListCtrl().Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnEnumeratedValueEndEdit)
   367         for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
   367         for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
   368             setattr(self.EnumeratedValues, func, self.OnEnumeratedValuesChanged)
   368             setattr(self.EnumeratedValues, func, self.OnEnumeratedValuesChanged)
   369         
   369         
   370         self.staticText8 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT8,
   370         self.staticText8 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT8,
   371               label=_('Initial Value:'), name='staticText8', parent=self.EnumeratedPanel,
   371               label=_('Initial Value:'), name='staticText8', parent=self.EnumeratedPanel,
   630             elif text.upper() in IEC_KEYWORDS:
   630             elif text.upper() in IEC_KEYWORDS:
   631                 message = wx.MessageDialog(self, _("\"%s\" is a keyword. It can't be used!")%text, _("Error"), wx.OK|wx.ICON_ERROR)
   631                 message = wx.MessageDialog(self, _("\"%s\" is a keyword. It can't be used!")%text, _("Error"), wx.OK|wx.ICON_ERROR)
   632                 message.ShowModal()
   632                 message.ShowModal()
   633                 message.Destroy()
   633                 message.Destroy()
   634             else:
   634             else:
   635                 wx.CallAfter(self.RefreshEnumeratedValues)
   635                 initial_selected = None
       
   636                 if self.EnumeratedInitialValue.GetStringSelection() == values[index]:
       
   637                     initial_selected = text
       
   638                 wx.CallAfter(self.RefreshEnumeratedValues, initial_selected)
   636                 wx.CallAfter(self.RefreshTypeInfos)
   639                 wx.CallAfter(self.RefreshTypeInfos)
   637                 event.Skip()
   640                 event.Skip()
   638         else:
   641         else:
   639             wx.CallAfter(self.RefreshEnumeratedValues)
       
   640             wx.CallAfter(self.RefreshTypeInfos)
       
   641             event.Skip()
   642             event.Skip()
   642     
   643     
   643     def OnEnumeratedValuesChanged(self, event):
   644     def OnEnumeratedValuesChanged(self, event):
   644         wx.CallAfter(self.RefreshEnumeratedValues)
   645         wx.CallAfter(self.RefreshEnumeratedValues)
   645         wx.CallAfter(self.RefreshTypeInfos)
   646         wx.CallAfter(self.RefreshTypeInfos)
   750                 self.ArrayPanel.Show()
   751                 self.ArrayPanel.Show()
   751             elif selected == "Structure":
   752             elif selected == "Structure":
   752                 self.StructurePanel.Show()
   753                 self.StructurePanel.Show()
   753             self.MainSizer.Layout()
   754             self.MainSizer.Layout()
   754 
   755 
   755     def RefreshEnumeratedValues(self):
   756     def RefreshEnumeratedValues(self, initial_selected=None):
   756         selected = self.EnumeratedInitialValue.GetStringSelection()
   757         if initial_selected is None:
       
   758             initial_selected = self.EnumeratedInitialValue.GetStringSelection()
   757         self.EnumeratedInitialValue.Clear()
   759         self.EnumeratedInitialValue.Clear()
   758         self.EnumeratedInitialValue.Append("")
   760         self.EnumeratedInitialValue.Append("")
   759         for value in self.EnumeratedValues.GetStrings():
   761         for value in self.EnumeratedValues.GetStrings():
   760             self.EnumeratedInitialValue.Append(value)
   762             self.EnumeratedInitialValue.Append(value)
   761         self.EnumeratedInitialValue.SetStringSelection(selected)
   763         self.EnumeratedInitialValue.SetStringSelection(initial_selected)
   762 
   764 
   763     def RefreshBoundsRange(self):
   765     def RefreshBoundsRange(self):
   764         range = self.Controler.GetDataTypeRange(self.SubrangeBaseType.GetStringSelection())
   766         range = self.Controler.GetDataTypeRange(self.SubrangeBaseType.GetStringSelection())
   765         if range is not None:
   767         if range is not None:
   766             min_value, max_value = range
   768             min_value, max_value = range