119 |
127 |
120 #------------------------------------------------------------------------------- |
128 #------------------------------------------------------------------------------- |
121 # Datatype Editor class |
129 # Datatype Editor class |
122 #------------------------------------------------------------------------------- |
130 #------------------------------------------------------------------------------- |
123 |
131 |
124 [ID_DATATYPEEDITOR, ID_DATATYPEEDITORPANEL, ID_DATATYPEEDITORSTATICBOX, |
|
125 ID_DATATYPEEDITORDERIVATIONTYPE, ID_DATATYPEEDITORDIRECTLYPANEL, |
|
126 ID_DATATYPEEDITORSUBRANGEPANEL, ID_DATATYPEEDITORDIRECTLYBASETYPE, |
|
127 ID_DATATYPEEDITORSUBRANGEBASETYPE, ID_DATATYPEEDITORSUBRANGEMINIMUM, |
|
128 ID_DATATYPEEDITORSUBRANGEMAXIMUM, ID_DATATYPEEDITORDIRECTLYINITIALVALUE, |
|
129 ID_DATATYPEEDITORSUBRANGEINITIALVALUE, ID_DATATYPEEDITORENUMERATEDPANEL, |
|
130 ID_DATATYPEEDITORENUMERATEDVALUES, ID_DATATYPEEDITORENUMERATEDINITIALVALUE, |
|
131 ID_DATATYPEEDITORARRAYPANEL, ID_DATATYPEEDITORARRAYBASETYPE, |
|
132 ID_DATATYPEEDITORARRAYDIMENSIONS, ID_DATATYPEEDITORARRAYINITIALVALUE, |
|
133 ID_DATATYPEEDITORSTRUCTUREPANEL, ID_DATATYPEEDITORSTRUCTUREELEMENTSGRID, |
|
134 ID_DATATYPEEDITORSTRUCTUREADDBUTTON, ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON, |
|
135 ID_DATATYPEEDITORSTRUCTUREUPBUTTON, ID_DATATYPEEDITORSTRUCTUREDOWNBUTTON, |
|
136 ID_DATATYPEEDITORSTATICTEXT1, ID_DATATYPEEDITORSTATICTEXT2, |
|
137 ID_DATATYPEEDITORSTATICTEXT3, ID_DATATYPEEDITORSTATICTEXT4, |
|
138 ID_DATATYPEEDITORSTATICTEXT5, ID_DATATYPEEDITORSTATICTEXT6, |
|
139 ID_DATATYPEEDITORSTATICTEXT7, ID_DATATYPEEDITORSTATICTEXT8, |
|
140 ID_DATATYPEEDITORSTATICTEXT9, ID_DATATYPEEDITORSTATICTEXT10, |
|
141 ID_DATATYPEEDITORSTATICTEXT11, |
|
142 ] = [wx.NewId() for _init_ctrls in range(36)] |
|
143 |
|
144 def GetDatatypeTypes(): |
|
145 _ = lambda x : x |
|
146 return [_("Directly"), _("Subrange"), _("Enumerated"), _("Array"), _("Structure")] |
|
147 DATATYPE_TYPES_DICT = dict([(_(datatype), datatype) for datatype in GetDatatypeTypes()]) |
|
148 |
|
149 class DataTypeEditor(EditorPanel): |
132 class DataTypeEditor(EditorPanel): |
150 |
133 |
151 ID = ID_DATATYPEEDITOR |
134 def _init_Editor(self, parent): |
152 |
135 self.Editor = wx.Panel(parent, style=wx.SUNKEN_BORDER) |
153 def _init_coll_MainSizer_Items(self, parent): |
136 |
154 parent.AddSizer(self.TopSizer, 0, border=5, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT) |
|
155 parent.AddSizer(self.TypeInfosSizer, 0, border=5, flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT) |
|
156 |
|
157 def _init_coll_MainSizer_Growables(self, parent): |
|
158 parent.AddGrowableCol(0) |
|
159 parent.AddGrowableRow(1) |
|
160 |
|
161 def _init_coll_TopSizer_Items(self, parent): |
|
162 parent.AddWindow(self.staticText1, 0, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT) |
|
163 parent.AddWindow(self.DerivationType, 0, border=5, flag=wx.GROW|wx.RIGHT) |
|
164 |
|
165 def _init_coll_TypeInfosSizer_Items(self, parent): |
|
166 parent.AddWindow(self.DirectlyPanel, 1, border=0, flag=wx.ALL) |
|
167 parent.AddWindow(self.SubrangePanel, 1, border=0, flag=wx.ALL) |
|
168 parent.AddWindow(self.EnumeratedPanel, 1, border=0, flag=wx.GROW|wx.ALL) |
|
169 parent.AddWindow(self.ArrayPanel, 1, border=0, flag=wx.ALL) |
|
170 parent.AddWindow(self.StructurePanel, 1, border=0, flag=wx.GROW|wx.ALL) |
|
171 |
|
172 def _init_coll_DirectlyPanelSizer_Items(self, parent): |
|
173 parent.AddWindow(self.staticText2, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
174 parent.AddWindow(self.DirectlyBaseType, 1, border=5, flag=wx.GROW|wx.ALL) |
|
175 parent.AddWindow(self.staticText3, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
176 parent.AddWindow(self.DirectlyInitialValue, 1, border=5, flag=wx.ALL) |
|
177 |
|
178 def _init_coll_SubrangePanelSizer_Items(self, parent): |
|
179 parent.AddWindow(self.staticText4, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
180 parent.AddWindow(self.SubrangeBaseType, 1, border=5, flag=wx.GROW|wx.ALL) |
|
181 parent.AddWindow(self.staticText5, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
182 parent.AddWindow(self.SubrangeInitialValue, 1, border=5, flag=wx.GROW|wx.ALL) |
|
183 parent.AddWindow(self.staticText6, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
184 parent.AddWindow(self.SubrangeMinimum, 1, border=5, flag=wx.GROW|wx.ALL) |
|
185 parent.AddWindow(wx.Size(0, 0), 1, border=5, flag=wx.GROW|wx.ALL) |
|
186 parent.AddWindow(wx.Size(0, 0), 1, border=5, flag=wx.GROW|wx.ALL) |
|
187 parent.AddWindow(self.staticText7, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
188 parent.AddWindow(self.SubrangeMaximum, 1, border=5, flag=wx.GROW|wx.ALL) |
|
189 |
|
190 def _init_coll_EnumeratedPanelSizer_Items(self, parent): |
|
191 parent.AddWindow(self.EnumeratedValues, 1, border=5, flag=wx.GROW|wx.ALL) |
|
192 parent.AddSizer(self.EnumeratedPanelRightSizer, 1, border=0, flag=0) |
|
193 |
|
194 def _init_coll_EnumeratedPanelRightSizer_Items(self, parent): |
|
195 parent.AddWindow(self.staticText8, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
196 parent.AddWindow(self.EnumeratedInitialValue, 1, border=5, flag=wx.ALL) |
|
197 |
|
198 def _init_coll_ArrayPanelSizer_Items(self, parent): |
|
199 parent.AddSizer(self.ArrayPanelLeftSizer, 0, border=0, flag=wx.GROW) |
|
200 parent.AddSizer(self.ArrayPanelRightSizer, 0, border=0, flag=wx.GROW) |
|
201 parent.AddWindow(self.ArrayDimensions, 0, border=5, flag=wx.GROW|wx.ALL) |
|
202 |
|
203 def _init_coll_ArrayPanelSizer_Growables(self, parent): |
|
204 parent.AddGrowableCol(0) |
|
205 parent.AddGrowableCol(1) |
|
206 parent.AddGrowableRow(1) |
|
207 |
|
208 def _init_coll_ArrayPanelLeftSizer_Items(self, parent): |
|
209 parent.AddWindow(self.staticText9, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
210 parent.AddWindow(self.ArrayBaseType, 1, border=5, flag=wx.GROW|wx.ALL) |
|
211 |
|
212 def _init_coll_ArrayPanelRightSizer_Items(self, parent): |
|
213 parent.AddWindow(self.staticText10, 1, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
214 parent.AddWindow(self.ArrayInitialValue, 1, border=5, flag=wx.ALL) |
|
215 |
|
216 def _init_coll_StructurePanelSizer_Items(self, parent): |
|
217 parent.AddSizer(self.StructurePanelButtonSizer, 0, border=5, flag=wx.ALL|wx.GROW) |
|
218 parent.AddWindow(self.StructureElementsGrid, 0, border=0, flag=wx.GROW) |
|
219 |
|
220 def _init_coll_StructurePanelSizer_Growables(self, parent): |
|
221 parent.AddGrowableCol(0) |
|
222 parent.AddGrowableRow(1) |
|
223 |
|
224 def _init_coll_StructurePanelButtonSizer_Items(self, parent): |
|
225 parent.AddWindow(self.staticText11, 0, border=0, flag=wx.ALIGN_BOTTOM) |
|
226 parent.AddWindow(self.StructureAddButton, 0, border=0, flag=0) |
|
227 parent.AddWindow(self.StructureDeleteButton, 0, border=0, flag=0) |
|
228 parent.AddWindow(self.StructureUpButton, 0, border=0, flag=0) |
|
229 parent.AddWindow(self.StructureDownButton, 0, border=0, flag=0) |
|
230 |
|
231 def _init_coll_StructurePanelButtonSizer_Growables(self, parent): |
|
232 parent.AddGrowableCol(0) |
|
233 parent.AddGrowableRow(0) |
|
234 |
|
235 def _init_sizers(self): |
|
236 self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) |
137 self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) |
237 self.TopSizer = wx.BoxSizer(wx.HORIZONTAL) |
138 self.MainSizer.AddGrowableCol(0) |
238 self.TypeInfosSizer = wx.StaticBoxSizer(self.staticbox, wx.HORIZONTAL) |
139 self.MainSizer.AddGrowableRow(1) |
239 self.DirectlyPanelSizer = wx.BoxSizer(wx.HORIZONTAL) |
140 |
240 self.SubrangePanelSizer = wx.GridSizer(cols=4, hgap=5, rows=3, vgap=0) |
141 top_sizer = wx.BoxSizer(wx.HORIZONTAL) |
241 self.EnumeratedPanelSizer = wx.BoxSizer(wx.HORIZONTAL) |
142 self.MainSizer.AddSizer(top_sizer, border=5, |
242 self.EnumeratedPanelRightSizer = wx.BoxSizer(wx.HORIZONTAL) |
143 flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT) |
243 self.ArrayPanelSizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0) |
144 |
244 self.ArrayPanelLeftSizer = wx.BoxSizer(wx.HORIZONTAL) |
145 derivation_type_label = wx.StaticText(self.Editor, label=_('Derivation Type:')) |
245 self.ArrayPanelRightSizer = wx.BoxSizer(wx.HORIZONTAL) |
146 top_sizer.AddWindow(derivation_type_label, border=5, |
246 self.StructurePanelSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0) |
147 flag=wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT) |
247 self.StructurePanelButtonSizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0) |
148 |
248 |
149 self.DerivationType = wx.ComboBox(self.Editor, |
249 self._init_coll_MainSizer_Items(self.MainSizer) |
150 size=wx.Size(200, -1), style=wx.CB_READONLY) |
250 self._init_coll_MainSizer_Growables(self.MainSizer) |
151 self.Bind(wx.EVT_COMBOBOX, self.OnDerivationTypeChanged, self.DerivationType) |
251 self._init_coll_TopSizer_Items(self.TopSizer) |
152 top_sizer.AddWindow(self.DerivationType, border=5, flag=wx.GROW|wx.RIGHT) |
252 self._init_coll_TypeInfosSizer_Items(self.TypeInfosSizer) |
153 |
253 self._init_coll_DirectlyPanelSizer_Items(self.DirectlyPanelSizer) |
154 typeinfos_staticbox = wx.StaticBox(self.Editor, label=_('Type infos:')) |
254 self._init_coll_SubrangePanelSizer_Items(self.SubrangePanelSizer) |
155 typeinfos_sizer = wx.StaticBoxSizer(typeinfos_staticbox, wx.HORIZONTAL) |
255 self._init_coll_EnumeratedPanelSizer_Items(self.EnumeratedPanelSizer) |
156 self.MainSizer.AddSizer(typeinfos_sizer, border=5, |
256 self._init_coll_EnumeratedPanelRightSizer_Items(self.EnumeratedPanelRightSizer) |
157 flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT) |
257 self._init_coll_ArrayPanelSizer_Items(self.ArrayPanelSizer) |
158 |
258 self._init_coll_ArrayPanelSizer_Growables(self.ArrayPanelSizer) |
|
259 self._init_coll_ArrayPanelLeftSizer_Items(self.ArrayPanelLeftSizer) |
|
260 self._init_coll_ArrayPanelRightSizer_Items(self.ArrayPanelRightSizer) |
|
261 self._init_coll_StructurePanelSizer_Items(self.StructurePanelSizer) |
|
262 self._init_coll_StructurePanelSizer_Growables(self.StructurePanelSizer) |
|
263 self._init_coll_StructurePanelButtonSizer_Items(self.StructurePanelButtonSizer) |
|
264 self._init_coll_StructurePanelButtonSizer_Growables(self.StructurePanelButtonSizer) |
|
265 |
|
266 self.Editor.SetSizer(self.MainSizer) |
|
267 self.DirectlyPanel.SetSizer(self.DirectlyPanelSizer) |
|
268 self.SubrangePanel.SetSizer(self.SubrangePanelSizer) |
|
269 self.EnumeratedPanel.SetSizer(self.EnumeratedPanelSizer) |
|
270 self.ArrayPanel.SetSizer(self.ArrayPanelSizer) |
|
271 self.StructurePanel.SetSizer(self.StructurePanelSizer) |
|
272 |
|
273 def _init_Editor(self, prnt): |
|
274 self.Editor = wx.Panel(id=ID_DATATYPEEDITORPANEL, name='', parent=prnt, |
|
275 size=wx.Size(0, 0), style=wx.SUNKEN_BORDER) |
|
276 |
|
277 self.staticbox = wx.StaticBox(id=ID_DATATYPEEDITORSTATICBOX, |
|
278 label=_('Type infos:'), name='staticBox1', parent=self.Editor, |
|
279 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
|
280 |
|
281 self.staticText1 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT1, |
|
282 label=_('Derivation Type:'), name='staticText1', parent=self.Editor, |
|
283 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
|
284 |
|
285 self.DerivationType = wx.ComboBox(id=ID_DATATYPEEDITORDERIVATIONTYPE, |
|
286 name='DerivationType', parent=self.Editor, pos=wx.Point(0, 0), |
|
287 size=wx.Size(200, 28), style=wx.CB_READONLY) |
|
288 self.Bind(wx.EVT_COMBOBOX, self.OnDerivationTypeChanged, id=ID_DATATYPEEDITORDERIVATIONTYPE) |
|
289 |
|
290 # Panel for Directly derived data types |
159 # Panel for Directly derived data types |
291 |
160 |
292 self.DirectlyPanel = wx.Panel(id=ID_DATATYPEEDITORDIRECTLYPANEL, |
161 self.DirectlyPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL) |
293 name='DirectlyPanel', parent=self.Editor, pos=wx.Point(0, 0), |
162 typeinfos_sizer.AddWindow(self.DirectlyPanel, 1) |
294 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
163 |
295 |
164 directly_panel_sizer = wx.BoxSizer(wx.HORIZONTAL) |
296 self.staticText2 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT2, |
165 |
297 label=_('Base Type:'), name='staticText2', parent=self.DirectlyPanel, |
166 directly_basetype_label = wx.StaticText(self.DirectlyPanel, |
298 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
167 label=_('Base Type:')) |
299 |
168 directly_panel_sizer.AddWindow(directly_basetype_label, 1, border=5, |
300 self.DirectlyBaseType = wx.ComboBox(id=ID_DATATYPEEDITORDIRECTLYBASETYPE, |
169 flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
301 name='DirectlyBaseType', parent=self.DirectlyPanel, pos=wx.Point(0, 0), |
170 |
302 size=wx.Size(0, 28), style=wx.CB_READONLY) |
171 self.DirectlyBaseType = wx.ComboBox(self.DirectlyPanel, style=wx.CB_READONLY) |
303 self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORDIRECTLYBASETYPE) |
172 self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.DirectlyPanel) |
304 |
173 directly_panel_sizer.AddWindow(self.DirectlyBaseType, 1, border=5, |
305 self.staticText3 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT3, |
174 flag=wx.GROW|wx.ALL) |
306 label=_('Initial Value:'), name='staticText3', parent=self.DirectlyPanel, |
175 |
307 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
176 directly_initialvalue_label = wx.StaticText(self.DirectlyPanel, |
308 |
177 label=_('Initial Value:')) |
309 self.DirectlyInitialValue = wx.TextCtrl(id=ID_DATATYPEEDITORDIRECTLYINITIALVALUE, |
178 directly_panel_sizer.AddWindow(directly_initialvalue_label, 1, border=5, |
310 name='DirectlyInitialValue', parent=self.DirectlyPanel, pos=wx.Point(0, 0), |
179 flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
311 size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL|wx.TE_PROCESS_ENTER|wx.TE_MULTILINE|wx.TE_RICH) |
180 |
312 self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, id=ID_DATATYPEEDITORDIRECTLYINITIALVALUE) |
181 self.DirectlyInitialValue = wx.TextCtrl(self.DirectlyPanel, |
313 |
182 style=wx.TAB_TRAVERSAL|wx.TE_PROCESS_ENTER|wx.TE_RICH) |
|
183 self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.DirectlyInitialValue) |
|
184 directly_panel_sizer.AddWindow(self.DirectlyInitialValue, 1, border=5, |
|
185 flag=wx.ALL) |
|
186 |
|
187 self.DirectlyPanel.SetSizer(directly_panel_sizer) |
|
188 |
314 # Panel for Subrange data types |
189 # Panel for Subrange data types |
315 |
190 |
316 self.SubrangePanel = wx.Panel(id=ID_DATATYPEEDITORSUBRANGEPANEL, |
191 self.SubrangePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL) |
317 name='SubrangePanel', parent=self.Editor, pos=wx.Point(0, 0), |
192 typeinfos_sizer.AddWindow(self.SubrangePanel, 1) |
318 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
193 |
319 |
194 subrange_panel_sizer = wx.GridSizer(cols=4, hgap=5, rows=3, vgap=0) |
320 self.staticText4 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT4, |
195 |
321 label=_('Base Type:'), name='staticText4', parent=self.SubrangePanel, |
196 subrange_basetype_label = wx.StaticText(self.SubrangePanel, |
322 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
197 label=_('Base Type:')) |
323 |
198 subrange_panel_sizer.AddWindow(subrange_basetype_label, 1, border=5, |
324 self.SubrangeBaseType = wx.ComboBox(id=ID_DATATYPEEDITORSUBRANGEBASETYPE, |
199 flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
325 name='SubrangeBaseType', parent=self.SubrangePanel, pos=wx.Point(0, 0), |
200 |
326 size=wx.Size(0, 28), style=wx.CB_READONLY) |
201 self.SubrangeBaseType = wx.ComboBox(self.SubrangePanel, style=wx.CB_READONLY) |
327 self.SubrangeBaseType.SetBackgroundColour(wx.BLUE) |
202 self.Bind(wx.EVT_COMBOBOX, self.OnSubrangeBaseTypeChanged, |
328 self.Bind(wx.EVT_COMBOBOX, self.OnSubrangeBaseTypeChanged, id=ID_DATATYPEEDITORSUBRANGEBASETYPE) |
203 self.SubrangeBaseType) |
329 |
204 subrange_panel_sizer.AddWindow(self.SubrangeBaseType, 1, border=5, |
330 self.staticText5 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT5, |
205 flag=wx.GROW|wx.ALL) |
331 label=_('Initial Value:'), name='staticText5', parent=self.SubrangePanel, |
206 |
332 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
207 subrange_initialvalue_label = wx.StaticText(self.SubrangePanel, |
333 |
208 label=_('Initial Value:')) |
334 self.SubrangeInitialValue = wx.SpinCtrl(id=ID_DATATYPEEDITORSUBRANGEINITIALVALUE, |
209 subrange_panel_sizer.AddWindow(subrange_initialvalue_label, 1, border=5, |
335 name='SubrangeInitialValue', parent=self.SubrangePanel, pos=wx.Point(0, 0), |
210 flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
336 size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL) |
211 |
337 self.Bind(wx.EVT_SPINCTRL, self.OnInfosChanged, id=ID_DATATYPEEDITORSUBRANGEINITIALVALUE) |
212 self.SubrangeInitialValue = wx.SpinCtrl(self.SubrangePanel, |
338 |
213 style=wx.TAB_TRAVERSAL) |
339 self.staticText6 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT6, |
214 self.Bind(wx.EVT_SPINCTRL, self.OnInfosChanged, self.SubrangeInitialValue) |
340 label=_('Minimum:'), name='staticText6', parent=self.SubrangePanel, |
215 subrange_panel_sizer.AddWindow(self.SubrangeInitialValue, 1, border=5, |
341 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
216 flag=wx.GROW|wx.ALL) |
342 |
217 |
343 self.SubrangeMinimum = wx.SpinCtrl(id=ID_DATATYPEEDITORSUBRANGEMINIMUM, |
218 subrange_minimum_label = wx.StaticText(self.SubrangePanel, label=_('Minimum:')) |
344 name='SubrangeMinimum', parent=self.SubrangePanel, pos=wx.Point(0, 0), |
219 subrange_panel_sizer.AddWindow(subrange_minimum_label, 1, border=5, |
345 size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL) |
220 flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
346 self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMinimumChanged, id=ID_DATATYPEEDITORSUBRANGEMINIMUM) |
221 |
347 |
222 self.SubrangeMinimum = wx.SpinCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL) |
348 self.staticText7 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT7, |
223 self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMinimumChanged, self.SubrangeMinimum) |
349 label=_('Maximum:'), name='staticText7', parent=self.SubrangePanel, |
224 subrange_panel_sizer.AddWindow(self.SubrangeMinimum, 1, border=5, |
350 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
225 flag=wx.GROW|wx.ALL) |
351 |
226 |
352 self.SubrangeMaximum = wx.SpinCtrl(id=ID_DATATYPEEDITORSUBRANGEMAXIMUM, |
227 for i in xrange(2): |
353 name='SubrangeMaximum', parent=self.SubrangePanel, pos=wx.Point(0, 0), |
228 subrange_panel_sizer.AddWindow(wx.Size(0, 0), 1) |
354 size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL) |
229 |
355 self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMaximumChanged, id=ID_DATATYPEEDITORSUBRANGEMAXIMUM) |
230 subrange_maximum_label = wx.StaticText(self.SubrangePanel, |
356 |
231 label=_('Maximum:')) |
|
232 subrange_panel_sizer.AddWindow(subrange_maximum_label, 1, border=5, |
|
233 flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
234 |
|
235 self.SubrangeMaximum = wx.SpinCtrl(self.SubrangePanel, style=wx.TAB_TRAVERSAL) |
|
236 self.Bind(wx.EVT_SPINCTRL, self.OnSubrangeMaximumChanged, self.SubrangeMaximum) |
|
237 |
|
238 subrange_panel_sizer.AddWindow(self.SubrangeMaximum, 1, border=5, |
|
239 flag=wx.GROW|wx.ALL) |
|
240 |
|
241 self.SubrangePanel.SetSizer(subrange_panel_sizer) |
|
242 |
357 # Panel for Enumerated data types |
243 # Panel for Enumerated data types |
358 |
244 |
359 self.EnumeratedPanel = wx.Panel(id=ID_DATATYPEEDITORENUMERATEDPANEL, |
245 self.EnumeratedPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL) |
360 name='EnumeratedPanel', parent=self.Editor, pos=wx.Point(0, 0), |
246 typeinfos_sizer.AddWindow(self.EnumeratedPanel, 1) |
361 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
247 |
362 |
248 enumerated_panel_sizer = wx.BoxSizer(wx.HORIZONTAL) |
363 self.EnumeratedValues = CustomEditableListBox(id=ID_DATATYPEEDITORENUMERATEDVALUES, |
249 |
364 name='EnumeratedValues', parent=self.EnumeratedPanel, label=_("Values:"), pos=wx.Point(0, 0), |
250 self.EnumeratedValues = CustomEditableListBox(self.EnumeratedPanel, |
365 size=wx.Size(0, 0), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE) |
251 label=_("Values:"), style=wx.gizmos.EL_ALLOW_NEW| |
|
252 wx.gizmos.EL_ALLOW_EDIT| |
|
253 wx.gizmos.EL_ALLOW_DELETE) |
366 setattr(self.EnumeratedValues, "_OnLabelEndEdit", self.OnEnumeratedValueEndEdit) |
254 setattr(self.EnumeratedValues, "_OnLabelEndEdit", self.OnEnumeratedValueEndEdit) |
367 for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]: |
255 for func in ["_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]: |
368 setattr(self.EnumeratedValues, func, self.OnEnumeratedValuesChanged) |
256 setattr(self.EnumeratedValues, func, self.OnEnumeratedValuesChanged) |
369 |
257 enumerated_panel_sizer.AddWindow(self.EnumeratedValues, 1, border=5, |
370 self.staticText8 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT8, |
258 flag=wx.GROW|wx.ALL) |
371 label=_('Initial Value:'), name='staticText8', parent=self.EnumeratedPanel, |
259 |
372 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
260 enumerated_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL) |
373 |
261 enumerated_panel_sizer.AddSizer(enumerated_panel_rightsizer, 1) |
374 self.EnumeratedInitialValue = wx.ComboBox(id=ID_DATATYPEEDITORENUMERATEDINITIALVALUE, |
262 |
375 name='EnumeratedInitialValue', parent=self.EnumeratedPanel, pos=wx.Point(0, 0), |
263 enumerated_initialvalue_label = wx.StaticText(self.EnumeratedPanel, |
376 size=wx.Size(0, 28), style=wx.CB_READONLY) |
264 label=_('Initial Value:')) |
377 self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORENUMERATEDINITIALVALUE) |
265 enumerated_panel_rightsizer.AddWindow(enumerated_initialvalue_label, 1, |
|
266 border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
267 |
|
268 self.EnumeratedInitialValue = wx.ComboBox(self.EnumeratedPanel, |
|
269 style=wx.CB_READONLY) |
|
270 self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.EnumeratedInitialValue) |
|
271 enumerated_panel_rightsizer.AddWindow(self.EnumeratedInitialValue, 1, |
|
272 border=5, flag=wx.ALL) |
|
273 |
|
274 self.EnumeratedPanel.SetSizer(enumerated_panel_sizer) |
378 |
275 |
379 # Panel for Array data types |
276 # Panel for Array data types |
380 |
277 |
381 self.ArrayPanel = wx.Panel(id=ID_DATATYPEEDITORARRAYPANEL, |
278 self.ArrayPanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL) |
382 name='ArrayPanel', parent=self.Editor, pos=wx.Point(0, 0), |
279 typeinfos_sizer.AddWindow(self.ArrayPanel, 1) |
383 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
280 |
384 |
281 array_panel_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0) |
385 self.staticText9 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT9, |
282 array_panel_sizer.AddGrowableCol(0) |
386 label=_('Base Type:'), name='staticText9', parent=self.ArrayPanel, |
283 array_panel_sizer.AddGrowableCol(1) |
387 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
284 array_panel_sizer.AddGrowableRow(1) |
388 |
285 |
389 self.ArrayBaseType = wx.ComboBox(id=ID_DATATYPEEDITORARRAYBASETYPE, |
286 array_panel_leftSizer = wx.BoxSizer(wx.HORIZONTAL) |
390 name='ArrayBaseType', parent=self.ArrayPanel, pos=wx.Point(0, 0), |
287 array_panel_sizer.AddSizer(array_panel_leftSizer, flag=wx.GROW) |
391 size=wx.Size(0, 28), style=wx.CB_READONLY) |
288 |
392 self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, id=ID_DATATYPEEDITORARRAYBASETYPE) |
289 array_basetype_label = wx.StaticText(self.ArrayPanel, label=_('Base Type:')) |
393 |
290 array_panel_leftSizer.AddWindow(array_basetype_label, 1, border=5, |
394 self.ArrayDimensions = CustomEditableListBox(id=ID_DATATYPEEDITORARRAYDIMENSIONS, |
291 flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
395 name='ArrayDimensions', parent=self.ArrayPanel, label=_("Dimensions:"), pos=wx.Point(0, 0), |
292 |
396 size=wx.Size(0, 24), style=wx.gizmos.EL_ALLOW_NEW | wx.gizmos.EL_ALLOW_EDIT | wx.gizmos.EL_ALLOW_DELETE) |
293 self.ArrayBaseType = wx.ComboBox(self.ArrayPanel, style=wx.CB_READONLY) |
397 for func in ["_OnLabelEndEdit", "_OnAddButton", "_OnDelButton", "_OnUpButton", "_OnDownButton"]: |
294 self.Bind(wx.EVT_COMBOBOX, self.OnInfosChanged, self.ArrayBaseType) |
|
295 array_panel_leftSizer.AddWindow(self.ArrayBaseType, 1, border=5, |
|
296 flag=wx.GROW|wx.ALL) |
|
297 |
|
298 array_panel_rightsizer = wx.BoxSizer(wx.HORIZONTAL) |
|
299 array_panel_sizer.AddSizer(array_panel_rightsizer, flag=wx.GROW) |
|
300 |
|
301 array_initialvalue_label = wx.StaticText(self.ArrayPanel, |
|
302 label=_('Initial Value:')) |
|
303 array_panel_rightsizer.AddWindow(array_initialvalue_label, 1, border=5, |
|
304 flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) |
|
305 |
|
306 self.ArrayInitialValue = wx.TextCtrl(self.ArrayPanel, |
|
307 style=wx.TAB_TRAVERSAL|wx.TE_PROCESS_ENTER|wx.TE_RICH) |
|
308 self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, self.ArrayInitialValue) |
|
309 array_panel_rightsizer.AddWindow(self.ArrayInitialValue, 1, border=5, |
|
310 flag=wx.ALL) |
|
311 |
|
312 self.ArrayDimensions = CustomEditableListBox(self.ArrayPanel, |
|
313 label=_("Dimensions:"), style=wx.gizmos.EL_ALLOW_NEW| |
|
314 wx.gizmos.EL_ALLOW_EDIT| |
|
315 wx.gizmos.EL_ALLOW_DELETE) |
|
316 for func in ["_OnLabelEndEdit", "_OnAddButton", "_OnDelButton", |
|
317 "_OnUpButton", "_OnDownButton"]: |
398 setattr(self.EnumeratedValues, func, self.OnDimensionsChanged) |
318 setattr(self.EnumeratedValues, func, self.OnDimensionsChanged) |
399 |
319 array_panel_sizer.AddWindow(self.ArrayDimensions, 0, border=5, |
400 self.staticText10 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT10, |
320 flag=wx.GROW|wx.ALL) |
401 label=_('Initial Value:'), name='staticText10', parent=self.ArrayPanel, |
321 |
402 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
322 self.ArrayPanel.SetSizer(array_panel_sizer) |
403 |
|
404 self.ArrayInitialValue = wx.TextCtrl(id=ID_DATATYPEEDITORARRAYINITIALVALUE, |
|
405 name='ArrayInitialValue', parent=self.ArrayPanel, pos=wx.Point(0, 0), |
|
406 size=wx.Size(0, 24), style=wx.TAB_TRAVERSAL|wx.TE_PROCESS_ENTER|wx.TE_MULTILINE|wx.TE_RICH) |
|
407 self.Bind(wx.EVT_TEXT_ENTER, self.OnReturnKeyPressed, id=ID_DATATYPEEDITORARRAYINITIALVALUE) |
|
408 |
323 |
409 # Panel for Structure data types |
324 # Panel for Structure data types |
410 |
325 |
411 self.StructurePanel = wx.Panel(id=ID_DATATYPEEDITORSTRUCTUREPANEL, |
326 self.StructurePanel = wx.Panel(self.Editor, style=wx.TAB_TRAVERSAL) |
412 name='StructurePanel', parent=self.Editor, pos=wx.Point(0, 0), |
327 typeinfos_sizer.AddWindow(self.StructurePanel, 1) |
413 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
328 |
414 |
329 structure_panel_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0) |
415 self.staticText11 = wx.StaticText(id=ID_DATATYPEEDITORSTATICTEXT11, |
330 structure_panel_sizer.AddGrowableCol(0) |
416 label=_('Elements :'), name='staticText11', parent=self.StructurePanel, |
331 structure_panel_sizer.AddGrowableRow(1) |
417 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
332 |
418 |
333 structure_button_sizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0) |
419 self.StructureElementsGrid = CustomGrid(id=ID_DATATYPEEDITORSTRUCTUREELEMENTSGRID, |
334 structure_button_sizer.AddGrowableCol(0) |
420 name='StructureElementsGrid', parent=self.StructurePanel, pos=wx.Point(0, 0), |
335 structure_button_sizer.AddGrowableRow(0) |
|
336 structure_panel_sizer.AddSizer(structure_button_sizer, 0, border=5, |
|
337 flag=wx.ALL|wx.GROW) |
|
338 |
|
339 structure_elements_label = wx.StaticText(self.StructurePanel, |
|
340 label=_('Elements :')) |
|
341 structure_button_sizer.AddWindow(structure_elements_label, flag=wx.ALIGN_BOTTOM) |
|
342 |
|
343 for name, bitmap, help in [ |
|
344 ("StructureAddButton", "add_element", _("Add element")), |
|
345 ("StructureDeleteButton", "remove_element", _("Remove element")), |
|
346 ("StructureUpButton", "up", _("Move element up")), |
|
347 ("StructureDownButton", "down", _("Move element down"))]: |
|
348 button = wx.lib.buttons.GenBitmapButton(self.StructurePanel, |
|
349 bitmap=GetBitmap(bitmap), size=wx.Size(28, 28), style=wx.NO_BORDER) |
|
350 button.SetToolTipString(help) |
|
351 setattr(self, name, button) |
|
352 structure_button_sizer.AddWindow(button) |
|
353 |
|
354 self.StructureElementsGrid = CustomGrid(self.StructurePanel, |
421 size=wx.Size(0, 150), style=wx.VSCROLL) |
355 size=wx.Size(0, 150), style=wx.VSCROLL) |
422 if wx.VERSION >= (2, 6, 0): |
356 self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, |
423 self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnStructureElementsGridCellChange) |
357 self.OnStructureElementsGridCellChange) |
424 self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, self.OnStructureElementsGridEditorShown) |
358 self.StructureElementsGrid.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, |
425 else: |
359 self.OnStructureElementsGridEditorShown) |
426 wx.grid.EVT_GRID_CELL_CHANGE(self.StructureElementsGrid, self.OnStructureElementsGridCellChange) |
360 structure_panel_sizer.AddWindow(self.StructureElementsGrid, flag=wx.GROW) |
427 wx.grid.EVT_GRID_EDITOR_SHOWN(self.StructureElementsGrid, self.OnStructureElementsGridEditorShown) |
361 |
428 |
362 self.StructurePanel.SetSizer(structure_panel_sizer) |
429 self.StructureAddButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREADDBUTTON, label=_('Add'), |
363 |
430 name='StructureAddButton', parent=self.StructurePanel, pos=wx.Point(0, 0), |
364 self.Editor.SetSizer(self.MainSizer) |
431 size=wx.DefaultSize, style=0) |
365 |
432 |
|
433 self.StructureDeleteButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDELETEBUTTON, label=_('Delete'), |
|
434 name='StructureDeleteButton', parent=self.StructurePanel, pos=wx.Point(0, 0), |
|
435 size=wx.DefaultSize, style=0) |
|
436 |
|
437 self.StructureUpButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREUPBUTTON, label='^', |
|
438 name='StructureUpButton', parent=self.StructurePanel, pos=wx.Point(0, 0), |
|
439 size=wx.Size(32, 32), style=0) |
|
440 |
|
441 self.StructureDownButton = wx.Button(id=ID_DATATYPEEDITORSTRUCTUREDOWNBUTTON, label='v', |
|
442 name='StructureDownButton', parent=self.StructurePanel, pos=wx.Point(0, 0), |
|
443 size=wx.Size(32, 32), style=0) |
|
444 |
|
445 self._init_sizers() |
|
446 |
|
447 def __init__(self, parent, tagname, window, controler): |
366 def __init__(self, parent, tagname, window, controler): |
448 EditorPanel.__init__(self, parent, tagname, window, controler) |
367 EditorPanel.__init__(self, parent, tagname, window, controler) |
449 |
368 |
450 self.StructureElementDefaultValue = {"Name" : "", "Type" : "INT", "Initial Value" : ""} |
369 self.StructureElementDefaultValue = {"Name" : "", "Type" : "INT", "Initial Value" : ""} |
451 self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames()) |
370 self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames()) |