--- a/DataTypeEditor.py Fri Jun 15 18:03:25 2012 +0200
+++ b/DataTypeEditor.py Mon Jun 25 20:03:53 2012 +0200
@@ -22,31 +22,39 @@
#License along with this library; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+import re
+
import wx
import wx.grid
+import wx.lib.buttons
from plcopen.structures import IEC_KEYWORDS, TestIdentifier
from graphics.GraphicCommons import REFRESH_HIGHLIGHT_PERIOD
from controls import CustomEditableListBox, CustomGrid, CustomTable, EditorPanel
-
-import re
+from utils.BitmapLibrary import GetBitmap
+
+#-------------------------------------------------------------------------------
+# Helpers
+#-------------------------------------------------------------------------------
DIMENSION_MODEL = re.compile("([0-9]+)\.\.([0-9]+)$")
def AppendMenu(parent, help, id, kind, text):
- if wx.VERSION >= (2, 6, 0):
- parent.Append(help=help, id=id, kind=kind, text=text)
- else:
- parent.Append(helpString=help, id=id, kind=kind, item=text)
+ parent.Append(help=help, id=id, kind=kind, text=text)
+
+def GetElementsTableColnames():
+ _ = lambda x : x
+ return ["#", _("Name"), _("Type"), _("Initial Value")]
+
+def GetDatatypeTypes():
+ _ = lambda x : x
+ return [_("Directly"), _("Subrange"), _("Enumerated"), _("Array"), _("Structure")]
+DATATYPE_TYPES_DICT = dict([(_(datatype), datatype) for datatype in GetDatatypeTypes()])
#-------------------------------------------------------------------------------
# Structure Elements Table
#-------------------------------------------------------------------------------
-def GetElementsTableColnames():
- _ = lambda x : x
- return ["#", _("Name"), _("Type"), _("Initial Value")]
-
class ElementsTable(CustomTable):
"""
@@ -121,329 +129,240 @@
# Datatype Editor class
#-------------------------------------------------------------------------------
-[ID_DATATYPEEDITOR, ID_DATATYPEEDITORPANEL, ID_DATATYPEEDITORSTATICBOX,
- ID_DATATYPEEDITORDERIVATIONTYPE, ID_DATATYPEEDITORDIRECTLYPANEL,
- ID_DATATYPEEDITORSUBRANGEPANEL, ID_DATATYPEEDITORDIRECTLYBASETYPE,
- ID_DATATYPEEDITORSUBRANGEBASETYPE, ID_DATATYPEEDITORSUBRANGEMINIMUM,
- ID_DATATYPEEDITORSUBRANGEMAXIMUM, ID_DATATYPEEDITORDIRECTLYINITIALVALUE,
- ID_DATATYPEEDITORSUBRANGEINITIALVALUE, ID_DATATYPEEDITORENUMERATEDPANEL,
- ID_DATATYPEEDITORENUMERATEDVALUES, ID_DATATYPEEDITORENUMERATEDINITIALVALUE,
- ID_DATATYPEEDITORARRAYPANEL, ID_DATATYPEEDITORARRAYBASETYPE,
- ID_DATATYPEEDITORARRAYDIMENSIONS, ID_DATATYPEEDITORARRAYINITIALVALUE,
- ID_DATATYPEEDITORSTRUCTUREPANEL, ID_DATATYPEEDITORSTRUCTUREELEMENTSGRID,
- ID_DATATYPEEDITORSTRUCTUREADDBUTTON, ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON,
- ID_DATATYPEEDITORSTRUCTUREUPBUTTON, ID_DATATYPEEDITORSTRUCTUREDOWNBUTTON,
- ID_DATATYPEEDITORSTATICTEXT1, ID_DATATYPEEDITORSTATICTEXT2,
- ID_DATATYPEEDITORSTATICTEXT3, ID_DATATYPEEDITORSTATICTEXT4,
- ID_DATATYPEEDITORSTATICTEXT5, ID_DATATYPEEDITORSTATICTEXT6,
- ID_DATATYPEEDITORSTATICTEXT7, ID_DATATYPEEDITORSTATICTEXT8,
- ID_DATATYPEEDITORSTATICTEXT9, ID_DATATYPEEDITORSTATICTEXT10,
- ID_DATATYPEEDITORSTATICTEXT11,
-] = [wx.NewId() for _init_ctrls in range(36)]
-
-def GetDatatypeTypes():
- _ = lambda x : x
- return [_("Directly"), _("Subrange"), _("Enumerated"), _("Array"), _("Structure")]
-DATATYPE_TYPES_DICT = dict([(_(datatype), datatype) for datatype in GetDatatypeTypes()])
-
class DataTypeEditor(EditorPanel):
- ID = ID_DATATYPEEDITOR
-
- def _init_coll_MainSizer_Items(self, parent):
- parent.AddSizer(self.TopSizer, 0, border=5, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
- parent.AddSizer(self.TypeInfosSizer, 0, border=5, flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
-
- def _init_coll_MainSizer_Growables(self, parent):
- parent.AddGrowableCol(0)
- parent.AddGrowableRow(1)
-
- def _init_coll_TopSizer_Items(self, parent):
- parent.AddWindow(self.staticText1, 0, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT)
- parent.AddWindow(self.DerivationType, 0, border=5, flag=wx.GROW|wx.RIGHT)
-
- def _init_coll_TypeInfosSizer_Items(self, parent):
- parent.AddWindow(self.DirectlyPanel, 1, border=0, flag=wx.ALL)
- parent.AddWindow(self.SubrangePanel, 1, border=0, flag=wx.ALL)
- parent.AddWindow(self.EnumeratedPanel, 1, border=0, flag=wx.GROW|wx.ALL)
- parent.AddWindow(self.ArrayPanel, 1, border=0, flag=wx.ALL)
- parent.AddWindow(self.StructurePanel, 1, border=0, flag=wx.GROW|wx.ALL)
-
- def _init_coll_DirectlyPanelSizer_Items(self, parent):
- parent.AddWindow(self.staticText2, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
- parent.AddWindow(self.DirectlyBaseType, 1, border=5, flag=wx.GROW|wx.ALL)
- parent.AddWindow(self.staticText3, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
- parent.AddWindow(self.DirectlyInitialValue, 1, border=5, flag=wx.ALL)
-
- def _init_coll_SubrangePanelSizer_Items(self, parent):
- parent.AddWindow(self.staticText4, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
- parent.AddWindow(self.SubrangeBaseType, 1, border=5, flag=wx.GROW|wx.ALL)
- parent.AddWindow(self.staticText5, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
- parent.AddWindow(self.SubrangeInitialValue, 1, border=5, flag=wx.GROW|wx.ALL)
- parent.AddWindow(self.staticText6, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
- parent.AddWindow(self.SubrangeMinimum, 1, border=5, flag=wx.GROW|wx.ALL)
- parent.AddWindow(wx.Size(0, 0), 1, border=5, flag=wx.GROW|wx.ALL)
- parent.AddWindow(wx.Size(0, 0), 1, border=5, flag=wx.GROW|wx.ALL)
- parent.AddWindow(self.staticText7, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
- parent.AddWindow(self.SubrangeMaximum, 1, border=5, flag=wx.GROW|wx.ALL)
-
- def _init_coll_EnumeratedPanelSizer_Items(self, parent):
- parent.AddWindow(self.EnumeratedValues, 1, border=5, flag=wx.GROW|wx.ALL)
- parent.AddSizer(self.EnumeratedPanelRightSizer, 1, border=0, flag=0)
-
- def _init_coll_EnumeratedPanelRightSizer_Items(self, parent):
- parent.AddWindow(self.staticText8, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
- parent.AddWindow(self.EnumeratedInitialValue, 1, border=5, flag=wx.ALL)
-
- def _init_coll_ArrayPanelSizer_Items(self, parent):
- parent.AddSizer(self.ArrayPanelLeftSizer, 0, border=0, flag=wx.GROW)
- parent.AddSizer(self.ArrayPanelRightSizer, 0, border=0, flag=wx.GROW)
- parent.AddWindow(self.ArrayDimensions, 0, border=5, flag=wx.GROW|wx.ALL)
-
- def _init_coll_ArrayPanelSizer_Growables(self, parent):
- parent.AddGrowableCol(0)
- parent.AddGrowableCol(1)
- parent.AddGrowableRow(1)
-
- def _init_coll_ArrayPanelLeftSizer_Items(self, parent):
- parent.AddWindow(self.staticText9, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
- parent.AddWindow(self.ArrayBaseType, 1, border=5, flag=wx.GROW|wx.ALL)
-
- def _init_coll_ArrayPanelRightSizer_Items(self, parent):
- parent.AddWindow(self.staticText10, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
- parent.AddWindow(self.ArrayInitialValue, 1, border=5, flag=wx.ALL)
-
- def _init_coll_StructurePanelSizer_Items(self, parent):
- parent.AddSizer(self.StructurePanelButtonSizer, 0, border=5, flag=wx.ALL|wx.GROW)
- parent.AddWindow(self.StructureElementsGrid, 0, border=0, flag=wx.GROW)
-
- def _init_coll_StructurePanelSizer_Growables(self, parent):
- parent.AddGrowableCol(0)
- parent.AddGrowableRow(1)
-
- def _init_coll_StructurePanelButtonSizer_Items(self, parent):
- parent.AddWindow(self.staticText11, 0, border=0, flag=wx.ALIGN_BOTTOM)
- parent.AddWindow(self.StructureAddButton, 0, border=0, flag=0)
- parent.AddWindow(self.StructureDeleteButton, 0, border=0, flag=0)
- parent.AddWindow(self.StructureUpButton, 0, border=0, flag=0)
- parent.AddWindow(self.StructureDownButton, 0, border=0, flag=0)
-
- def _init_coll_StructurePanelButtonSizer_Growables(self, parent):
- parent.AddGrowableCol(0)
- parent.AddGrowableRow(0)
-
- def _init_sizers(self):
+ def _init_Editor(self, parent):
+ self.Editor = wx.Panel(parent, style=wx.SUNKEN_BORDER)
+
self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
- self.TopSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.TypeInfosSizer = wx.StaticBoxSizer(self.staticbox, wx.HORIZONTAL)
- self.DirectlyPanelSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.SubrangePanelSizer = wx.GridSizer(cols=4, hgap=5, rows=3, vgap=0)
- self.EnumeratedPanelSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.EnumeratedPanelRightSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.ArrayPanelSizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0)
- self.ArrayPanelLeftSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.ArrayPanelRightSizer = wx.BoxSizer(wx.HORIZONTAL)
- self.StructurePanelSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
- self.StructurePanelButtonSizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
-
- self._init_coll_MainSizer_Items(self.MainSizer)
- self._init_coll_MainSizer_Growables(self.MainSizer)
- self._init_coll_TopSizer_Items(self.TopSizer)
- self._init_coll_TypeInfosSizer_Items(self.TypeInfosSizer)
- self._init_coll_DirectlyPanelSizer_Items(self.DirectlyPanelSizer)
- self._init_coll_SubrangePanelSizer_Items(self.SubrangePanelSizer)
- self._init_coll_EnumeratedPanelSizer_Items(self.EnumeratedPanelSizer)
- self._init_coll_EnumeratedPanelRightSizer_Items(self.EnumeratedPanelRightSizer)
- self._init_coll_ArrayPanelSizer_Items(self.ArrayPanelSizer)
- self._init_coll_ArrayPanelSizer_Growables(self.ArrayPanelSizer)
- self._init_coll_ArrayPanelLeftSizer_Items(self.ArrayPanelLeftSizer)
- self._init_coll_ArrayPanelRightSizer_Items(self.ArrayPanelRightSizer)
- self._init_coll_StructurePanelSizer_Items(self.StructurePanelSizer)
- self._init_coll_StructurePanelSizer_Growables(self.StructurePanelSizer)
- self._init_coll_StructurePanelButtonSizer_Items(self.StructurePanelButtonSizer)
- self._init_coll_StructurePanelButtonSizer_Growables(self.StructurePanelButtonSizer)
-
- self.Editor.SetSizer(self.MainSizer)
- self.DirectlyPanel.SetSizer(self.DirectlyPanelSizer)
- self.SubrangePanel.SetSizer(self.SubrangePanelSizer)
- self.EnumeratedPanel.SetSizer(self.EnumeratedPanelSizer)
- self.ArrayPanel.SetSizer(self.ArrayPanelSizer)
- self.StructurePanel.SetSizer(self.StructurePanelSizer)
-
- def _init_Editor(self, prnt):
- self.Editor = wx.Panel(id=ID_DATATYPEEDITORPANEL, name='', parent=prnt,
- size=wx.Size(0, 0), style=wx.SUNKEN_BORDER)
-
- self.staticbox = wx.StaticBox(id=ID_DATATYPEEDITORSTATICBOX,
- label=_('Type infos:'), name='staticBox1', parent=self.Editor,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.staticText1 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT1,
- label=_('Derivation Type:'), name='staticText1', parent=self.Editor,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.DerivationType = wx.ComboBox(id=ID_DATATYPEEDITORDERIVATIONTYPE,
- name='DerivationType', parent=self.Editor, pos=wx.Point(0, 0),
- size=wx.Size(200, 28), style=wx.CB_READONLY)
- self.Bind(wx.EVT_COMBOBOX, self.OnDerivationTypeChanged, id=ID_DATATYPEEDITORDERIVATIONTYPE)
-
+ self.MainSizer.AddGrowableCol(0)
+ self.MainSizer.AddGrowableRow(1)
+
+ top_sizer = wx.BoxSizer(wx.HORIZONTAL)
+ self.MainSizer.AddSizer(top_sizer, border=5,
+ flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+
+ derivation_type_label = wx.StaticText(self.Editor, label=_('Derivation Type:'))
+ top_sizer.AddWindow(derivation_type_label, border=5,
+ flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT)
+
+ self.DerivationType = wx.ComboBox(self.Editor,
+ size=wx.Size(200, -1), style=wx.CB_READONLY)
+ self.Bind(wx.EVT_COMBOBOX, self.OnDerivationTypeChanged, self.DerivationType)
+ top_sizer.AddWindow(self.DerivationType, border=5, flag=wx.GROW|wx.RIGHT)
+
+ typeinfos_staticbox = wx.StaticBox(self.Editor, label=_('Type infos:'))
+ typeinfos_sizer = wx.StaticBoxSizer(typeinfos_staticbox, wx.HORIZONTAL)
+ self.MainSizer.AddSizer(typeinfos_sizer, border=5,
+ flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT)
+
# Panel for Directly derived data types
- self.DirectlyPanel = wx.Panel(id=ID_DATATYPEEDITORDIRECTLYPANEL,
- name='DirectlyPanel', parent=self.Editor, pos=wx.Point(0, 0),
- size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
-
- self.staticText2 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT2,
- label=_('Base Type:'), name='staticText2', parent=self.DirectlyPanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.DirectlyBaseType = wx.ComboBox(id=ID_DATATYPEEDITORDIRECTLYBASETYPE,
- name='DirectlyBaseType', parent=self.DirectlyPanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 28), style=wx.CB_READONLY)
- self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORDIRECTLYBASETYPE)
-
- self.staticText3 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT3,
- label=_('Initial Value:'), name='staticText3', parent=self.DirectlyPanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.DirectlyInitialValue = wx.TextCtrl(id=ID_DATATYPEEDITORDIRECTLYINITIALVALUE,
- name='DirectlyInitialValue', parent=self.DirectlyPanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL|wx.TE_PROCESS_ENTER|wx.TE_MULTILINE|wx.TE_RICH)
- self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, id=ID_DATATYPEEDITORDIRECTLYINITIALVALUE)
-
+ self.DirectlyPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
+ typeinfos_sizer.AddWindow(self.DirectlyPanel, 1)
+
+ directly_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)
+
+ directly_basetype_label = wx.StaticText(self.DirectlyPanel,
+ label=_('Base Type:'))
+ directly_panel_sizer.AddWindow(directly_basetype_label, 1, border=5,
+ flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
+
+ self.DirectlyBaseType = wx.ComboBox(self.DirectlyPanel, style=wx.CB_READONLY)
+ self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.DirectlyPanel)
+ directly_panel_sizer.AddWindow(self.DirectlyBaseType, 1, border=5,
+ flag=wx.GROW|wx.ALL)
+
+ directly_initialvalue_label = wx.StaticText(self.DirectlyPanel,
+ label=_('Initial Value:'))
+ directly_panel_sizer.AddWindow(directly_initialvalue_label, 1, border=5,
+ flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
+
+ self.DirectlyInitialValue = wx.TextCtrl(self.DirectlyPanel,
+ style=wx.TAB_TRAVERSAL|wx.TE_PROCESS_ENTER|wx.TE_RICH)
+ self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.DirectlyInitialValue)
+ directly_panel_sizer.AddWindow(self.DirectlyInitialValue, 1, border=5,
+ flag=wx.ALL)
+
+ self.DirectlyPanel.SetSizer(directly_panel_sizer)
+
# Panel for Subrange data types
- self.SubrangePanel = wx.Panel(id=ID_DATATYPEEDITORSUBRANGEPANEL,
- name='SubrangePanel', parent=self.Editor, pos=wx.Point(0, 0),
- size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
-
- self.staticText4 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT4,
- label=_('Base Type:'), name='staticText4', parent=self.SubrangePanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.SubrangeBaseType = wx.ComboBox(id=ID_DATATYPEEDITORSUBRANGEBASETYPE,
- name='SubrangeBaseType', parent=self.SubrangePanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 28), style=wx.CB_READONLY)
- self.SubrangeBaseType.SetBackgroundColour(wx.BLUE)
- self.Bind(wx.EVT_COMBOBOX, self.OnSubrangeBaseTypeChanged, id=ID_DATATYPEEDITORSUBRANGEBASETYPE)
-
- self.staticText5 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT5,
- label=_('Initial Value:'), name='staticText5', parent=self.SubrangePanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.SubrangeInitialValue = wx.SpinCtrl(id=ID_DATATYPEEDITORSUBRANGEINITIALVALUE,
- name='SubrangeInitialValue', parent=self.SubrangePanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL)
- self.Bind(wx.EVT_SPINCTRL, self.OnInfosChanged, id=ID_DATATYPEEDITORSUBRANGEINITIALVALUE)
-
- self.staticText6 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT6,
- label=_('Minimum:'), name='staticText6', parent=self.SubrangePanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.SubrangeMinimum = wx.SpinCtrl(id=ID_DATATYPEEDITORSUBRANGEMINIMUM,
- name='SubrangeMinimum', parent=self.SubrangePanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL)
- self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMinimumChanged, id=ID_DATATYPEEDITORSUBRANGEMINIMUM)
-
- self.staticText7 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT7,
- label=_('Maximum:'), name='staticText7', parent=self.SubrangePanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.SubrangeMaximum = wx.SpinCtrl(id=ID_DATATYPEEDITORSUBRANGEMAXIMUM,
- name='SubrangeMaximum', parent=self.SubrangePanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL)
- self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMaximumChanged, id=ID_DATATYPEEDITORSUBRANGEMAXIMUM)
-
+ self.SubrangePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
+ typeinfos_sizer.AddWindow(self.SubrangePanel, 1)
+
+ subrange_panel_sizer = wx.GridSizer(cols=4, hgap=5, rows=3, vgap=0)
+
+ subrange_basetype_label = wx.StaticText(self.SubrangePanel,
+ label=_('Base Type:'))
+ subrange_panel_sizer.AddWindow(subrange_basetype_label, 1, border=5,
+ flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
+
+ self.SubrangeBaseType = wx.ComboBox(self.SubrangePanel, style=wx.CB_READONLY)
+ self.Bind(wx.EVT_COMBOBOX, self.OnSubrangeBaseTypeChanged,
+ self.SubrangeBaseType)
+ subrange_panel_sizer.AddWindow(self.SubrangeBaseType, 1, border=5,
+ flag=wx.GROW|wx.ALL)
+
+ subrange_initialvalue_label = wx.StaticText(self.SubrangePanel,
+ label=_('Initial Value:'))
+ subrange_panel_sizer.AddWindow(subrange_initialvalue_label, 1, border=5,
+ flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
+
+ self.SubrangeInitialValue = wx.SpinCtrl(self.SubrangePanel,
+ style=wx.TAB_TRAVERSAL)
+ self.Bind(wx.EVT_SPINCTRL, self.OnInfosChanged, self.SubrangeInitialValue)
+ subrange_panel_sizer.AddWindow(self.SubrangeInitialValue, 1, border=5,
+ flag=wx.GROW|wx.ALL)
+
+ subrange_minimum_label = wx.StaticText(self.SubrangePanel, label=_('Minimum:'))
+ subrange_panel_sizer.AddWindow(subrange_minimum_label, 1, border=5,
+ flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
+
+ self.SubrangeMinimum = wx.SpinCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
+ self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMinimumChanged, self.SubrangeMinimum)
+ subrange_panel_sizer.AddWindow(self.SubrangeMinimum, 1, border=5,
+ flag=wx.GROW|wx.ALL)
+
+ for i in xrange(2):
+ subrange_panel_sizer.AddWindow(wx.Size(0, 0), 1)
+
+ subrange_maximum_label = wx.StaticText(self.SubrangePanel,
+ label=_('Maximum:'))
+ subrange_panel_sizer.AddWindow(subrange_maximum_label, 1, border=5,
+ flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
+
+ self.SubrangeMaximum = wx.SpinCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL)
+ self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMaximumChanged, self.SubrangeMaximum)
+
+ subrange_panel_sizer.AddWindow(self.SubrangeMaximum, 1, border=5,
+ flag=wx.GROW|wx.ALL)
+
+ self.SubrangePanel.SetSizer(subrange_panel_sizer)
+
# Panel for Enumerated data types
-
- self.EnumeratedPanel = wx.Panel(id=ID_DATATYPEEDITORENUMERATEDPANEL,
- name='EnumeratedPanel', parent=self.Editor, pos=wx.Point(0, 0),
- size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
-
- self.EnumeratedValues = CustomEditableListBox(id=ID_DATATYPEEDITORENUMERATEDVALUES,
- name='EnumeratedValues', parent=self.EnumeratedPanel, label=_("Values:"), pos=wx.Point(0, 0),
- size=wx.Size(0, 0), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
+
+ self.EnumeratedPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
+ typeinfos_sizer.AddWindow(self.EnumeratedPanel, 1)
+
+ enumerated_panel_sizer = wx.BoxSizer(wx.HORIZONTAL)
+
+ self.EnumeratedValues = CustomEditableListBox(self.EnumeratedPanel,
+ label=_("Values:"), style=wx.gizmos.EL_ALLOW_NEW|
+ wx.gizmos.EL_ALLOW_EDIT|
+ wx.gizmos.EL_ALLOW_DELETE)
setattr(self.EnumeratedValues, "_OnLabelEndEdit", self.OnEnumeratedValueEndEdit)
for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
setattr(self.EnumeratedValues, func, self.OnEnumeratedValuesChanged)
-
- self.staticText8 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT8,
- label=_('Initial Value:'), name='staticText8', parent=self.EnumeratedPanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.EnumeratedInitialValue = wx.ComboBox(id=ID_DATATYPEEDITORENUMERATEDINITIALVALUE,
- name='EnumeratedInitialValue', parent=self.EnumeratedPanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 28), style=wx.CB_READONLY)
- self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORENUMERATEDINITIALVALUE)
+ enumerated_panel_sizer.AddWindow(self.EnumeratedValues, 1, border=5,
+ flag=wx.GROW|wx.ALL)
+
+ enumerated_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL)
+ enumerated_panel_sizer.AddSizer(enumerated_panel_rightsizer, 1)
+
+ enumerated_initialvalue_label = wx.StaticText(self.EnumeratedPanel,
+ label=_('Initial Value:'))
+ enumerated_panel_rightsizer.AddWindow(enumerated_initialvalue_label, 1,
+ border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
+
+ self.EnumeratedInitialValue = wx.ComboBox(self.EnumeratedPanel,
+ style=wx.CB_READONLY)
+ self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.EnumeratedInitialValue)
+ enumerated_panel_rightsizer.AddWindow(self.EnumeratedInitialValue, 1,
+ border=5, flag=wx.ALL)
+
+ self.EnumeratedPanel.SetSizer(enumerated_panel_sizer)
# Panel for Array data types
- self.ArrayPanel = wx.Panel(id=ID_DATATYPEEDITORARRAYPANEL,
- name='ArrayPanel', parent=self.Editor, pos=wx.Point(0, 0),
- size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
-
- self.staticText9 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT9,
- label=_('Base Type:'), name='staticText9', parent=self.ArrayPanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.ArrayBaseType = wx.ComboBox(id=ID_DATATYPEEDITORARRAYBASETYPE,
- name='ArrayBaseType', parent=self.ArrayPanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 28), style=wx.CB_READONLY)
- self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORARRAYBASETYPE)
-
- self.ArrayDimensions = CustomEditableListBox(id=ID_DATATYPEEDITORARRAYDIMENSIONS,
- name='ArrayDimensions', parent=self.ArrayPanel, label=_("Dimensions:"), pos=wx.Point(0, 0),
- size=wx.Size(0, 24), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE)
- for func in ["_OnLabelEndEdit", "_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]:
+ self.ArrayPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
+ typeinfos_sizer.AddWindow(self.ArrayPanel, 1)
+
+ array_panel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0)
+ array_panel_sizer.AddGrowableCol(0)
+ array_panel_sizer.AddGrowableCol(1)
+ array_panel_sizer.AddGrowableRow(1)
+
+ array_panel_leftSizer = wx.BoxSizer(wx.HORIZONTAL)
+ array_panel_sizer.AddSizer(array_panel_leftSizer, flag=wx.GROW)
+
+ array_basetype_label = wx.StaticText(self.ArrayPanel, label=_('Base Type:'))
+ array_panel_leftSizer.AddWindow(array_basetype_label, 1, border=5,
+ flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
+
+ self.ArrayBaseType = wx.ComboBox(self.ArrayPanel, style=wx.CB_READONLY)
+ self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.ArrayBaseType)
+ array_panel_leftSizer.AddWindow(self.ArrayBaseType, 1, border=5,
+ flag=wx.GROW|wx.ALL)
+
+ array_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL)
+ array_panel_sizer.AddSizer(array_panel_rightsizer, flag=wx.GROW)
+
+ array_initialvalue_label = wx.StaticText(self.ArrayPanel,
+ label=_('Initial Value:'))
+ array_panel_rightsizer.AddWindow(array_initialvalue_label, 1, border=5,
+ flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL)
+
+ self.ArrayInitialValue = wx.TextCtrl(self.ArrayPanel,
+ style=wx.TAB_TRAVERSAL|wx.TE_PROCESS_ENTER|wx.TE_RICH)
+ self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.ArrayInitialValue)
+ array_panel_rightsizer.AddWindow(self.ArrayInitialValue, 1, border=5,
+ flag=wx.ALL)
+
+ self.ArrayDimensions = CustomEditableListBox(self.ArrayPanel,
+ label=_("Dimensions:"), style=wx.gizmos.EL_ALLOW_NEW|
+ wx.gizmos.EL_ALLOW_EDIT|
+ wx.gizmos.EL_ALLOW_DELETE)
+ for func in ["_OnLabelEndEdit", "_OnAddButton", "_OnDelButton",
+ "_OnUpButton", "_OnDownButton"]:
setattr(self.EnumeratedValues, func, self.OnDimensionsChanged)
-
- self.staticText10 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT10,
- label=_('Initial Value:'), name='staticText10', parent=self.ArrayPanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.ArrayInitialValue = wx.TextCtrl(id=ID_DATATYPEEDITORARRAYINITIALVALUE,
- name='ArrayInitialValue', parent=self.ArrayPanel, pos=wx.Point(0, 0),
- size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL|wx.TE_PROCESS_ENTER|wx.TE_MULTILINE|wx.TE_RICH)
- self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, id=ID_DATATYPEEDITORARRAYINITIALVALUE)
+ array_panel_sizer.AddWindow(self.ArrayDimensions, 0, border=5,
+ flag=wx.GROW|wx.ALL)
+
+ self.ArrayPanel.SetSizer(array_panel_sizer)
# Panel for Structure data types
- self.StructurePanel = wx.Panel(id=ID_DATATYPEEDITORSTRUCTUREPANEL,
- name='StructurePanel', parent=self.Editor, pos=wx.Point(0, 0),
- size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
-
- self.staticText11 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT11,
- label=_('Elements :'), name='staticText11', parent=self.StructurePanel,
- pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
-
- self.StructureElementsGrid = CustomGrid(id=ID_DATATYPEEDITORSTRUCTUREELEMENTSGRID,
- name='StructureElementsGrid', parent=self.StructurePanel, pos=wx.Point(0, 0),
+ self.StructurePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL)
+ typeinfos_sizer.AddWindow(self.StructurePanel, 1)
+
+ structure_panel_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
+ structure_panel_sizer.AddGrowableCol(0)
+ structure_panel_sizer.AddGrowableRow(1)
+
+ structure_button_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
+ structure_button_sizer.AddGrowableCol(0)
+ structure_button_sizer.AddGrowableRow(0)
+ structure_panel_sizer.AddSizer(structure_button_sizer, 0, border=5,
+ flag=wx.ALL|wx.GROW)
+
+ structure_elements_label = wx.StaticText(self.StructurePanel,
+ label=_('Elements :'))
+ structure_button_sizer.AddWindow(structure_elements_label, flag=wx.ALIGN_BOTTOM)
+
+ for name, bitmap, help in [
+ ("StructureAddButton", "add_element", _("Add element")),
+ ("StructureDeleteButton", "remove_element", _("Remove element")),
+ ("StructureUpButton", "up", _("Move element up")),
+ ("StructureDownButton", "down", _("Move element down"))]:
+ button = wx.lib.buttons.GenBitmapButton(self.StructurePanel,
+ bitmap=GetBitmap(bitmap), size=wx.Size(28, 28), style=wx.NO_BORDER)
+ button.SetToolTipString(help)
+ setattr(self, name, button)
+ structure_button_sizer.AddWindow(button)
+
+ self.StructureElementsGrid = CustomGrid(self.StructurePanel,
size=wx.Size(0, 150), style=wx.VSCROLL)
- if wx.VERSION >= (2, 6, 0):
- self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnStructureElementsGridCellChange)
- self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, self.OnStructureElementsGridEditorShown)
- else:
- wx.grid.EVT_GRID_CELL_CHANGE(self.StructureElementsGrid, self.OnStructureElementsGridCellChange)
- wx.grid.EVT_GRID_EDITOR_SHOWN(self.StructureElementsGrid, self.OnStructureElementsGridEditorShown)
-
- self.StructureAddButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREADDBUTTON, label=_('Add'),
- name='StructureAddButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
- size=wx.DefaultSize, style=0)
-
- self.StructureDeleteButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON, label=_('Delete'),
- name='StructureDeleteButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
- size=wx.DefaultSize, style=0)
-
- self.StructureUpButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREUPBUTTON, label='^',
- name='StructureUpButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
- size=wx.Size(32, 32), style=0)
-
- self.StructureDownButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDOWNBUTTON, label='v',
- name='StructureDownButton', parent=self.StructurePanel, pos=wx.Point(0, 0),
- size=wx.Size(32, 32), style=0)
-
- self._init_sizers()
-
+ self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
+ self.OnStructureElementsGridCellChange)
+ self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN,
+ self.OnStructureElementsGridEditorShown)
+ structure_panel_sizer.AddWindow(self.StructureElementsGrid, flag=wx.GROW)
+
+ self.StructurePanel.SetSizer(structure_panel_sizer)
+
+ self.Editor.SetSizer(self.MainSizer)
+
def __init__(self, parent, tagname, window, controler):
EditorPanel.__init__(self, parent, tagname, window, controler)