dialogs/ArrayTypeDialog.py
changeset 577 9dbb79722fbc
parent 534 d506a353b3d3
child 640 c32c169b8f63
equal deleted inserted replaced
576:3f2024f30553 577:9dbb79722fbc
    23 
    23 
    24 import re
    24 import re
    25 from types import TupleType
    25 from types import TupleType
    26 
    26 
    27 import wx
    27 import wx
    28 import wx.gizmos
    28 
       
    29 from controls import CustomEditableListBox
    29 
    30 
    30 DIMENSION_MODEL = re.compile("([0-9]+)\.\.([0-9]+)$")
    31 DIMENSION_MODEL = re.compile("([0-9]+)\.\.([0-9]+)$")
    31 
    32 
    32 [ID_ARRAYTYPEDIALOG, ID_ARRAYTYPEDIALOGBASETYPE, 
    33 [ID_ARRAYTYPEDIALOG, ID_ARRAYTYPEDIALOGBASETYPE, 
    33  ID_ARRAYTYPEDIALOGDIMENSIONS, ID_ARRAYTYPEDIALOGDIALOGSTATICTEXT1, 
    34  ID_ARRAYTYPEDIALOGDIMENSIONS, ID_ARRAYTYPEDIALOGDIALOGSTATICTEXT1, 
    78 
    79 
    79         self.BaseType = wx.ComboBox(id=ID_ARRAYTYPEDIALOGBASETYPE, 
    80         self.BaseType = wx.ComboBox(id=ID_ARRAYTYPEDIALOGBASETYPE, 
    80               name='BaseType', parent=self, pos=wx.Point(0, 0),
    81               name='BaseType', parent=self, pos=wx.Point(0, 0),
    81               size=wx.Size(0, 28), style=wx.CB_READONLY)
    82               size=wx.Size(0, 28), style=wx.CB_READONLY)
    82         
    83         
    83         self.Dimensions = wx.gizmos.EditableListBox(id=ID_ARRAYTYPEDIALOGDIMENSIONS, 
    84         self.Dimensions = CustomEditableListBox(id=ID_ARRAYTYPEDIALOGDIMENSIONS, 
    84               name='ArrayDimensions', parent=self, label=_("Dimensions:"), pos=wx.Point(0, 0),
    85               name='ArrayDimensions', parent=self, label=_("Dimensions:"), pos=wx.Point(0, 0),
    85               size=wx.Size(0, 24), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
    86               size=wx.Size(0, 24), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
    86         self.Dimensions.GetListCtrl().Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnDimensionsChanged)
    87         list_ctrl = self.Dimensions.GetListCtrl()
    87         new_button = self.Dimensions.GetNewButton()
    88         list_ctrl.Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnDimensionsChanged)
    88         new_button.SetToolTipString(_("New item"))
    89         for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
    89         new_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
    90             setattr(self.Dimensions, func, self.OnDimensionsChanged)
    90         del_button = self.Dimensions.GetDelButton()
       
    91         del_button.SetToolTipString(_("Delete item"))
       
    92         del_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
       
    93         up_button = self.Dimensions.GetUpButton()
       
    94         up_button.SetToolTipString(_("Move up"))
       
    95         up_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
       
    96         down_button = self.Dimensions.GetDownButton()
       
    97         down_button.SetToolTipString(_("Move down"))
       
    98         down_button.Bind(wx.EVT_BUTTON, self.OnDimensionsChanged)
       
    99         
    91         
   100         self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
    92         self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
   101         if wx.VERSION >= (2, 5, 0):
    93         if wx.VERSION >= (2, 5, 0):
   102             self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
    94             self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
   103         else:
    95         else:
   114         if isinstance(infos, TupleType) and infos[0] == "array":
   106         if isinstance(infos, TupleType) and infos[0] == "array":
   115             self.BaseType.SetStringSelection(infos[1])
   107             self.BaseType.SetStringSelection(infos[1])
   116             self.Dimensions.SetStrings(map(lambda x : "..".join(x), infos[2]))
   108             self.Dimensions.SetStrings(map(lambda x : "..".join(x), infos[2]))
   117         elif infos in datatypes:
   109         elif infos in datatypes:
   118             self.BaseType.SetStringSelection(infos)
   110             self.BaseType.SetStringSelection(infos)
       
   111         
       
   112         self.BaseType.SetFocus()
   119         
   113         
   120     def GetDimensions(self):
   114     def GetDimensions(self):
   121         dimensions_list = []
   115         dimensions_list = []
   122         for dimensions in self.Dimensions.GetStrings():
   116         for dimensions in self.Dimensions.GetStrings():
   123             result = DIMENSION_MODEL.match(dimensions)
   117             result = DIMENSION_MODEL.match(dimensions)