editors/DataTypeEditor.py
changeset 1739 ec153828ded2
parent 1736 7e61baa047f0
child 1742 92932cd370a4
equal deleted inserted replaced
1738:d2e979738700 1739:ec153828ded2
    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)