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 |