46 def AppendMenu(parent, help, id, kind, text): |
46 def AppendMenu(parent, help, id, kind, text): |
47 parent.Append(help=help, id=id, kind=kind, text=text) |
47 parent.Append(help=help, id=id, kind=kind, text=text) |
48 |
48 |
49 |
49 |
50 def GetElementsTableColnames(): |
50 def GetElementsTableColnames(): |
51 _ = lambda x : x |
51 _ = lambda x: x |
52 return ["#", _("Name"), _("Type"), _("Initial Value")] |
52 return ["#", _("Name"), _("Type"), _("Initial Value")] |
53 |
53 |
54 |
54 |
55 def GetDatatypeTypes(): |
55 def GetDatatypeTypes(): |
56 _ = lambda x : x |
56 _ = lambda x: x |
57 return [_("Directly"), _("Subrange"), _("Enumerated"), _("Array"), _("Structure")] |
57 return [_("Directly"), _("Subrange"), _("Enumerated"), _("Array"), _("Structure")] |
58 DATATYPE_TYPES_DICT = dict([(_(datatype), datatype) for datatype in GetDatatypeTypes()]) |
58 DATATYPE_TYPES_DICT = dict([(_(datatype), datatype) for datatype in GetDatatypeTypes()]) |
59 |
59 |
60 #------------------------------------------------------------------------------- |
60 #------------------------------------------------------------------------------- |
61 # Structure Elements Table |
61 # Structure Elements Table |
79 colname = self.GetColLabelValue(col, False) |
79 colname = self.GetColLabelValue(col, False) |
80 value = self.data[row].get(colname, "") |
80 value = self.data[row].get(colname, "") |
81 |
81 |
82 if colname == "Type" and isinstance(value, TupleType): |
82 if colname == "Type" and isinstance(value, TupleType): |
83 if value[0] == "array": |
83 if value[0] == "array": |
84 return "ARRAY [%s] OF %s" % (",".join(map(lambda x : "..".join(x), value[2])), value[1]) |
84 return "ARRAY [%s] OF %s" % (",".join(map(lambda x: "..".join(x), value[2])), value[1]) |
85 return value |
85 return value |
86 |
86 |
87 def SetValue(self, row, col, value): |
87 def SetValue(self, row, col, value): |
88 if col < len(self.colnames): |
88 if col < len(self.colnames): |
89 colname = self.GetColLabelValue(col, False) |
89 colname = self.GetColLabelValue(col, False) |
377 self.Editor.SetSizer(self.MainSizer) |
377 self.Editor.SetSizer(self.MainSizer) |
378 |
378 |
379 def __init__(self, parent, tagname, window, controler): |
379 def __init__(self, parent, tagname, window, controler): |
380 EditorPanel.__init__(self, parent, tagname, window, controler) |
380 EditorPanel.__init__(self, parent, tagname, window, controler) |
381 |
381 |
382 self.StructureElementDefaultValue = {"Name" : "", "Type" : DefaultType, "Initial Value" : ""} |
382 self.StructureElementDefaultValue = {"Name": "", "Type": DefaultType, "Initial Value": ""} |
383 self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames()) |
383 self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames()) |
384 self.StructureColSizes = [40, 150, 100, 250] |
384 self.StructureColSizes = [40, 150, 100, 250] |
385 self.StructureColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT] |
385 self.StructureColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT] |
386 |
386 |
387 self.StructureElementsGrid.SetTable(self.StructureElementsTable) |
387 self.StructureElementsGrid.SetTable(self.StructureElementsTable) |
499 self.EnumeratedValues.SetStrings(type_infos["values"]) |
499 self.EnumeratedValues.SetStrings(type_infos["values"]) |
500 self.RefreshEnumeratedValues() |
500 self.RefreshEnumeratedValues() |
501 self.EnumeratedInitialValue.SetStringSelection(type_infos["initial"]) |
501 self.EnumeratedInitialValue.SetStringSelection(type_infos["initial"]) |
502 elif type_infos["type"] == "Array": |
502 elif type_infos["type"] == "Array": |
503 self.ArrayBaseType.SetStringSelection(type_infos["base_type"]) |
503 self.ArrayBaseType.SetStringSelection(type_infos["base_type"]) |
504 self.ArrayDimensions.SetStrings(map(lambda x : "..".join(x), type_infos["dimensions"])) |
504 self.ArrayDimensions.SetStrings(map(lambda x: "..".join(x), type_infos["dimensions"])) |
505 self.ArrayInitialValue.SetValue(type_infos["initial"]) |
505 self.ArrayInitialValue.SetValue(type_infos["initial"]) |
506 elif type_infos["type"] == "Structure": |
506 elif type_infos["type"] == "Structure": |
507 self.StructureElementsTable.SetData(type_infos["elements"]) |
507 self.StructureElementsTable.SetData(type_infos["elements"]) |
508 self.RefreshDisplayedInfos() |
508 self.RefreshDisplayedInfos() |
509 self.ShowHighlights() |
509 self.ShowHighlights() |
721 def RefreshSubrangeInitialValueRange(self): |
721 def RefreshSubrangeInitialValueRange(self): |
722 self.SubrangeInitialValue.SetRange(self.SubrangeMinimum.GetValue(), self.SubrangeMaximum.GetValue()) |
722 self.SubrangeInitialValue.SetRange(self.SubrangeMinimum.GetValue(), self.SubrangeMaximum.GetValue()) |
723 |
723 |
724 def RefreshTypeInfos(self): |
724 def RefreshTypeInfos(self): |
725 selected = DATATYPE_TYPES_DICT[self.DerivationType.GetStringSelection()] |
725 selected = DATATYPE_TYPES_DICT[self.DerivationType.GetStringSelection()] |
726 infos = {"type" : selected} |
726 infos = {"type": selected} |
727 if selected == "Directly": |
727 if selected == "Directly": |
728 infos["base_type"] = self.DirectlyBaseType.GetStringSelection() |
728 infos["base_type"] = self.DirectlyBaseType.GetStringSelection() |
729 infos["initial"] = self.DirectlyInitialValue.GetValue() |
729 infos["initial"] = self.DirectlyInitialValue.GetValue() |
730 elif selected == "Subrange": |
730 elif selected == "Subrange": |
731 infos["base_type"] = self.SubrangeBaseType.GetStringSelection() |
731 infos["base_type"] = self.SubrangeBaseType.GetStringSelection() |
793 listctrl.SetItemBackgroundColour(i, wx.NullColour) |
793 listctrl.SetItemBackgroundColour(i, wx.NullColour) |
794 listctrl.SetItemTextColour(i, wx.NullColour) |
794 listctrl.SetItemTextColour(i, wx.NullColour) |
795 self.StructureElementsTable.ClearHighlights(highlight_type) |
795 self.StructureElementsTable.ClearHighlights(highlight_type) |
796 self.RefreshView() |
796 self.RefreshView() |
797 |
797 |
798 def AddHighlight(self, infos, start, end ,highlight_type): |
798 def AddHighlight(self, infos, start, end, highlight_type): |
799 self.Highlights.append((infos, start, end, highlight_type)) |
799 self.Highlights.append((infos, start, end, highlight_type)) |
800 self.RefreshHighlightsTimer.Start(int(REFRESH_HIGHLIGHT_PERIOD * 1000), oneShot=True) |
800 self.RefreshHighlightsTimer.Start(int(REFRESH_HIGHLIGHT_PERIOD * 1000), oneShot=True) |
801 |
801 |
802 def ShowHighlights(self): |
802 def ShowHighlights(self): |
803 type_infos = self.Controler.GetDataTypeInfos(self.TagName) |
803 type_infos = self.Controler.GetDataTypeInfos(self.TagName) |