146 |
146 |
147 self.MainSizer = wx.BoxSizer(wx.VERTICAL) |
147 self.MainSizer = wx.BoxSizer(wx.VERTICAL) |
148 |
148 |
149 if self.SHOW_BASE_PARAMS: |
149 if self.SHOW_BASE_PARAMS: |
150 baseparamseditor_sizer = wx.BoxSizer(wx.HORIZONTAL) |
150 baseparamseditor_sizer = wx.BoxSizer(wx.HORIZONTAL) |
151 self.MainSizer.AddSizer(baseparamseditor_sizer, border=5, |
151 self.MainSizer.Add(baseparamseditor_sizer, border=5, |
152 flag=wx.GROW | wx.ALL) |
152 flag=wx.GROW | wx.ALL) |
153 |
153 |
154 self.FullIECChannel = wx.StaticText(self.Editor, -1) |
154 self.FullIECChannel = wx.StaticText(self.Editor, -1) |
155 self.FullIECChannel.SetFont( |
155 self.FullIECChannel.SetFont( |
156 wx.Font(faces["size"], wx.DEFAULT, wx.NORMAL, |
156 wx.Font(faces["size"], wx.DEFAULT, wx.NORMAL, |
157 wx.BOLD, faceName=faces["helv"])) |
157 wx.BOLD, faceName=faces["helv"])) |
158 baseparamseditor_sizer.AddWindow(self.FullIECChannel, |
158 baseparamseditor_sizer.Add(self.FullIECChannel, |
159 flag=wx.ALIGN_CENTER_VERTICAL) |
159 flag=wx.ALIGN_CENTER_VERTICAL) |
160 |
160 |
161 updownsizer = wx.BoxSizer(wx.VERTICAL) |
161 updownsizer = wx.BoxSizer(wx.VERTICAL) |
162 baseparamseditor_sizer.AddSizer(updownsizer, border=5, |
162 baseparamseditor_sizer.Add(updownsizer, border=5, |
163 flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL) |
163 flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL) |
164 |
164 |
165 self.IECCUpButton = wx.lib.buttons.GenBitmapTextButton( |
165 self.IECCUpButton = wx.lib.buttons.GenBitmapTextButton( |
166 self.Editor, |
166 self.Editor, |
167 bitmap=GetBitmap('IECCDown'), |
167 bitmap=GetBitmap('IECCDown'), |
168 size=wx.Size(16, 16), |
168 size=wx.Size(16, 16), |
169 style=wx.NO_BORDER) |
169 style=wx.NO_BORDER) |
170 self.IECCUpButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(1), |
170 self.IECCUpButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(1), |
171 self.IECCUpButton) |
171 self.IECCUpButton) |
172 updownsizer.AddWindow(self.IECCUpButton, flag=wx.ALIGN_LEFT) |
172 updownsizer.Add(self.IECCUpButton, flag=wx.ALIGN_LEFT) |
173 |
173 |
174 self.IECCDownButton = wx.lib.buttons.GenBitmapButton( |
174 self.IECCDownButton = wx.lib.buttons.GenBitmapButton( |
175 self.Editor, bitmap=GetBitmap('IECCUp'), |
175 self.Editor, bitmap=GetBitmap('IECCUp'), |
176 size=wx.Size(16, 16), style=wx.NO_BORDER) |
176 size=wx.Size(16, 16), style=wx.NO_BORDER) |
177 self.IECCDownButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(-1), |
177 self.IECCDownButton.Bind(wx.EVT_BUTTON, self.GetItemChannelChangedFunction(-1), |
178 self.IECCDownButton) |
178 self.IECCDownButton) |
179 updownsizer.AddWindow(self.IECCDownButton, flag=wx.ALIGN_LEFT) |
179 updownsizer.Add(self.IECCDownButton, flag=wx.ALIGN_LEFT) |
180 |
180 |
181 self.ConfNodeName = wx.TextCtrl(self.Editor, |
181 self.ConfNodeName = wx.TextCtrl(self.Editor, |
182 size=wx.Size(150, 25)) |
182 size=wx.Size(150, 25)) |
183 self.ConfNodeName.SetFont( |
183 self.ConfNodeName.SetFont( |
184 wx.Font(faces["size"] * 0.75, wx.DEFAULT, wx.NORMAL, |
184 wx.Font(faces["size"] * 0.75, wx.DEFAULT, wx.NORMAL, |
185 wx.BOLD, faceName=faces["helv"])) |
185 wx.BOLD, faceName=faces["helv"])) |
186 self.ConfNodeName.Bind( |
186 self.ConfNodeName.Bind( |
187 wx.EVT_TEXT, |
187 wx.EVT_TEXT, |
188 self.GetTextCtrlCallBackFunction(self.ConfNodeName, "BaseParams.Name", True), |
188 self.GetTextCtrlCallBackFunction(self.ConfNodeName, "BaseParams.Name", True), |
189 self.ConfNodeName) |
189 self.ConfNodeName) |
190 baseparamseditor_sizer.AddWindow( |
190 baseparamseditor_sizer.Add( |
191 self.ConfNodeName, border=5, |
191 self.ConfNodeName, border=5, |
192 flag=wx.LEFT | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) |
192 flag=wx.LEFT | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) |
193 |
193 |
194 buttons_sizer = self.GenerateMethodButtonSizer() |
194 buttons_sizer = self.GenerateMethodButtonSizer() |
195 baseparamseditor_sizer.AddSizer(buttons_sizer, flag=wx.ALIGN_CENTER) |
195 baseparamseditor_sizer.Add(buttons_sizer, flag=wx.ALIGN_CENTER) |
196 |
196 |
197 if tabs_num > 1: |
197 if tabs_num > 1: |
198 self.ConfNodeNoteBook = wx.Notebook(self.Editor) |
198 self.ConfNodeNoteBook = wx.Notebook(self.Editor) |
199 parent = self.ConfNodeNoteBook |
199 parent = self.ConfNodeNoteBook |
200 self.MainSizer.AddWindow(self.ConfNodeNoteBook, 1, flag=wx.GROW) |
200 self.MainSizer.Add(self.ConfNodeNoteBook, 1, flag=wx.GROW) |
201 else: |
201 else: |
202 parent = self.Editor |
202 parent = self.Editor |
203 self.ConfNodeNoteBook = None |
203 self.ConfNodeNoteBook = None |
204 |
204 |
205 self.Editor.SetSizer(self.MainSizer) |
205 self.Editor.SetSizer(self.MainSizer) |
230 self.ParamsEditorSizer.AddGrowableCol(0) |
230 self.ParamsEditorSizer.AddGrowableCol(0) |
231 self.ParamsEditorSizer.AddGrowableRow(0) |
231 self.ParamsEditorSizer.AddGrowableRow(0) |
232 self.ParamsEditor.SetSizer(self.ParamsEditorSizer) |
232 self.ParamsEditor.SetSizer(self.ParamsEditorSizer) |
233 |
233 |
234 self.ConfNodeParamsSizer = wx.BoxSizer(wx.VERTICAL) |
234 self.ConfNodeParamsSizer = wx.BoxSizer(wx.VERTICAL) |
235 self.ParamsEditorSizer.AddSizer(self.ConfNodeParamsSizer, border=5, |
235 self.ParamsEditorSizer.Add(self.ConfNodeParamsSizer, border=5, |
236 flag=wx.LEFT | wx.RIGHT | wx.BOTTOM) |
236 flag=wx.LEFT | wx.RIGHT | wx.BOTTOM) |
237 |
237 |
238 self.RefreshConfNodeParamsSizer() |
238 self.RefreshConfNodeParamsSizer() |
239 |
239 |
240 if self.ConfNodeNoteBook is not None: |
240 if self.ConfNodeNoteBook is not None: |
241 self.ConfNodeNoteBook.AddPage(self.ParamsEditor, _("Config")) |
241 self.ConfNodeNoteBook.AddPage(self.ParamsEditor, _("Config")) |
242 elif self.SHOW_BASE_PARAMS: |
242 elif self.SHOW_BASE_PARAMS: |
243 self.MainSizer.AddWindow(self.ParamsEditor, 1, flag=wx.GROW) |
243 self.MainSizer.Add(self.ParamsEditor, 1, flag=wx.GROW) |
244 else: |
244 else: |
245 self.Editor = self.ParamsEditor |
245 self.Editor = self.ParamsEditor |
246 else: |
246 else: |
247 self.ParamsEditor = None |
247 self.ParamsEditor = None |
248 |
248 |
315 button = GenBitmapTextButton(self.Editor, |
315 button = GenBitmapTextButton(self.Editor, |
316 bitmap=GetBitmap(confnode_method.get("bitmap", "Unknown")), |
316 bitmap=GetBitmap(confnode_method.get("bitmap", "Unknown")), |
317 label=confnode_method["name"], |
317 label=confnode_method["name"], |
318 style=wx.NO_BORDER) |
318 style=wx.NO_BORDER) |
319 button.SetFont(normal_bt_font) |
319 button.SetFont(normal_bt_font) |
320 button.SetToolTipString(confnode_method["tooltip"]) |
320 button.SetToolTip(confnode_method["tooltip"]) |
321 if confnode_method.get("push", False): |
321 if confnode_method.get("push", False): |
322 button.Bind(wx.EVT_LEFT_DOWN, self.GetButtonCallBackFunction(confnode_method["method"], True)) |
322 button.Bind(wx.EVT_LEFT_DOWN, self.GetButtonCallBackFunction(confnode_method["method"], True)) |
323 else: |
323 else: |
324 button.Bind(wx.EVT_BUTTON, self.GetButtonCallBackFunction(confnode_method["method"]), button) |
324 button.Bind(wx.EVT_BUTTON, self.GetButtonCallBackFunction(confnode_method["method"]), button) |
325 # a fancy underline on mouseover |
325 # a fancy underline on mouseover |
378 label=_(label), size=wx.Size(10, 0)) |
378 label=_(label), size=wx.Size(10, 0)) |
379 staticboxsizer = wx.StaticBoxSizer(staticbox, wx.VERTICAL) |
379 staticboxsizer = wx.StaticBoxSizer(staticbox, wx.VERTICAL) |
380 flags = (wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
380 flags = (wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
381 if first: |
381 if first: |
382 flags |= wx.TOP |
382 flags |= wx.TOP |
383 sizer.AddSizer(staticboxsizer, border=5, flag=flags) |
383 sizer.Add(staticboxsizer, border=5, flag=flags) |
384 self.GenerateSizerElements(staticboxsizer, |
384 self.GenerateSizerElements(staticboxsizer, |
385 element_infos["children"], |
385 element_infos["children"], |
386 element_path) |
386 element_path) |
387 else: |
387 else: |
388 boxsizer = wx.FlexGridSizer(cols=4, rows=1) |
388 boxsizer = wx.FlexGridSizer(cols=4, rows=1, gap=wx.Size(0,0)) |
389 boxsizer.AddGrowableCol(1) |
389 boxsizer.AddGrowableCol(1) |
390 flags = (wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
390 flags = (wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
391 if first: |
391 if first: |
392 flags |= wx.TOP |
392 flags |= wx.TOP |
393 sizer.AddSizer(boxsizer, border=5, flag=flags) |
393 sizer.Add(boxsizer, border=5, flag=flags) |
394 staticbitmap = GenStaticBitmap( |
394 staticbitmap = GenStaticBitmap( |
395 ID=-1, bitmapname=element_infos["name"], |
395 ID=-1, bitmapname=element_infos["name"], |
396 name="%s_bitmap" % element_infos["name"], parent=self.ParamsEditor, |
396 name="%s_bitmap" % element_infos["name"], parent=self.ParamsEditor, |
397 pos=wx.Point(0, 0), size=wx.Size(24, 24), style=0) |
397 pos=wx.Point(0, 0), size=wx.Size(24, 24), style=0) |
398 boxsizer.AddWindow(staticbitmap, border=5, flag=wx.RIGHT) |
398 boxsizer.Add(staticbitmap, border=5, flag=wx.RIGHT) |
399 |
399 |
400 statictext = wx.StaticText(self.ParamsEditor, |
400 statictext = wx.StaticText(self.ParamsEditor, |
401 label="%s:" % _(element_infos["name"])) |
401 label="%s:" % _(element_infos["name"])) |
402 boxsizer.AddWindow(statictext, border=5, |
402 boxsizer.Add(statictext, border=5, |
403 flag=wx.ALIGN_CENTER_VERTICAL | wx.RIGHT) |
403 flag=wx.ALIGN_CENTER_VERTICAL | wx.RIGHT) |
404 |
404 |
405 if isinstance(element_infos["type"], list): |
405 if isinstance(element_infos["type"], list): |
406 if isinstance(element_infos["value"], tuple): |
406 if isinstance(element_infos["value"], tuple): |
407 browse_boxsizer = wx.BoxSizer(wx.HORIZONTAL) |
407 browse_boxsizer = wx.BoxSizer(wx.HORIZONTAL) |
408 boxsizer.AddSizer(browse_boxsizer) |
408 boxsizer.Add(browse_boxsizer) |
409 |
409 |
410 textctrl = wx.TextCtrl(self.ParamsEditor, |
410 textctrl = wx.TextCtrl(self.ParamsEditor, |
411 size=wx.Size(275, -1), style=wx.TE_READONLY) |
411 size=wx.Size(275, -1), style=wx.TE_READONLY) |
412 if element_infos["value"] is not None: |
412 if element_infos["value"] is not None: |
413 textctrl.SetValue(element_infos["value"][0]) |
413 textctrl.SetValue(element_infos["value"][0]) |
414 value_infos = element_infos["value"][1] |
414 value_infos = element_infos["value"][1] |
415 else: |
415 else: |
416 value_infos = None |
416 value_infos = None |
417 browse_boxsizer.AddWindow(textctrl) |
417 browse_boxsizer.Add(textctrl) |
418 |
418 |
419 button = wx.Button(self.ParamsEditor, label="...") |
419 button = wx.Button(self.ParamsEditor, label="...") |
420 browse_boxsizer.AddWindow(button) |
420 browse_boxsizer.Add(button) |
421 button.Bind(wx.EVT_BUTTON, |
421 button.Bind(wx.EVT_BUTTON, |
422 self.GetBrowseCallBackFunction(element_infos["name"], textctrl, element_infos["type"], |
422 self.GetBrowseCallBackFunction(element_infos["name"], textctrl, element_infos["type"], |
423 value_infos, element_path), |
423 value_infos, element_path), |
424 button) |
424 button) |
425 else: |
425 else: |
426 combobox = wx.ComboBox(self.ParamsEditor, |
426 combobox = wx.ComboBox(self.ParamsEditor, |
427 size=wx.Size(300, -1), style=wx.CB_READONLY) |
427 size=wx.Size(300, -1), style=wx.CB_READONLY) |
428 boxsizer.AddWindow(combobox) |
428 boxsizer.Add(combobox) |
429 |
429 |
430 if element_infos["use"] == "optional": |
430 if element_infos["use"] == "optional": |
431 combobox.Append("") |
431 combobox.Append("") |
432 if len(element_infos["type"]) > 0 and isinstance(element_infos["type"][0], tuple): |
432 if len(element_infos["type"]) > 0 and isinstance(element_infos["type"][0], tuple): |
433 for choice, _xsdclass in element_infos["type"]: |
433 for choice, _xsdclass in element_infos["type"]: |
437 |
437 |
438 staticbox = wx.StaticBox(self.ParamsEditor, |
438 staticbox = wx.StaticBox(self.ParamsEditor, |
439 label="%s - %s" % (_(name), _(value)), |
439 label="%s - %s" % (_(name), _(value)), |
440 size=wx.Size(10, 0)) |
440 size=wx.Size(10, 0)) |
441 staticboxsizer = wx.StaticBoxSizer(staticbox, wx.VERTICAL) |
441 staticboxsizer = wx.StaticBoxSizer(staticbox, wx.VERTICAL) |
442 sizer.AddSizer(staticboxsizer, border=5, flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
442 sizer.Add(staticboxsizer, border=5, flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
443 self.GenerateSizerElements(staticboxsizer, element_infos["children"], element_path) |
443 self.GenerateSizerElements(staticboxsizer, element_infos["children"], element_path) |
444 callback = self.GetChoiceContentCallBackFunction(combobox, staticboxsizer, element_path) |
444 callback = self.GetChoiceContentCallBackFunction(combobox, staticboxsizer, element_path) |
445 else: |
445 else: |
446 for choice in element_infos["type"]: |
446 for choice in element_infos["type"]: |
447 combobox.Append(choice) |
447 combobox.Append(choice) |
461 scmax = element_infos["type"]["max"] |
461 scmax = element_infos["type"]["max"] |
462 spinctrl = wx.SpinCtrl(self.ParamsEditor, |
462 spinctrl = wx.SpinCtrl(self.ParamsEditor, |
463 size=wx.Size(300, -1), |
463 size=wx.Size(300, -1), |
464 style=wx.SP_ARROW_KEYS | wx.ALIGN_RIGHT) |
464 style=wx.SP_ARROW_KEYS | wx.ALIGN_RIGHT) |
465 spinctrl.SetRange(scmin, scmax) |
465 spinctrl.SetRange(scmin, scmax) |
466 boxsizer.AddWindow(spinctrl) |
466 boxsizer.Add(spinctrl) |
467 if element_infos["value"] is not None: |
467 if element_infos["value"] is not None: |
468 spinctrl.SetValue(element_infos["value"]) |
468 spinctrl.SetValue(element_infos["value"]) |
469 spinctrl.Bind(wx.EVT_SPINCTRL, |
469 spinctrl.Bind(wx.EVT_SPINCTRL, |
470 self.GetTextCtrlCallBackFunction(spinctrl, element_path), |
470 self.GetTextCtrlCallBackFunction(spinctrl, element_path), |
471 spinctrl) |
471 spinctrl) |
472 |
472 |
473 else: |
473 else: |
474 if element_infos["type"] == "boolean": |
474 if element_infos["type"] == "boolean": |
475 checkbox = wx.CheckBox(self.ParamsEditor) |
475 checkbox = wx.CheckBox(self.ParamsEditor) |
476 boxsizer.AddWindow(checkbox, flag=wx.ALIGN_CENTER_VERTICAL | wx.RIGHT) |
476 boxsizer.Add(checkbox, flag=wx.ALIGN_CENTER_VERTICAL | wx.RIGHT) |
477 if element_infos["value"] is not None: |
477 if element_infos["value"] is not None: |
478 checkbox.SetValue(element_infos["value"]) |
478 checkbox.SetValue(element_infos["value"]) |
479 checkbox.Bind(wx.EVT_CHECKBOX, |
479 checkbox.Bind(wx.EVT_CHECKBOX, |
480 self.GetCheckBoxCallBackFunction(checkbox, element_path), |
480 self.GetCheckBoxCallBackFunction(checkbox, element_path), |
481 checkbox) |
481 checkbox) |
488 scmax = 2**31-1 |
488 scmax = 2**31-1 |
489 spinctrl = wx.SpinCtrl(self.ParamsEditor, |
489 spinctrl = wx.SpinCtrl(self.ParamsEditor, |
490 size=wx.Size(300, -1), |
490 size=wx.Size(300, -1), |
491 style=wx.SP_ARROW_KEYS | wx.ALIGN_RIGHT) |
491 style=wx.SP_ARROW_KEYS | wx.ALIGN_RIGHT) |
492 spinctrl.SetRange(scmin, scmax) |
492 spinctrl.SetRange(scmin, scmax) |
493 boxsizer.AddWindow(spinctrl) |
493 boxsizer.Add(spinctrl) |
494 if element_infos["value"] is not None: |
494 if element_infos["value"] is not None: |
495 spinctrl.SetValue(element_infos["value"]) |
495 spinctrl.SetValue(element_infos["value"]) |
496 spinctrl.Bind(wx.EVT_SPINCTRL, |
496 spinctrl.Bind(wx.EVT_SPINCTRL, |
497 self.GetTextCtrlCallBackFunction(spinctrl, element_path), |
497 self.GetTextCtrlCallBackFunction(spinctrl, element_path), |
498 spinctrl) |
498 spinctrl) |
511 uriSizer.AddGrowableRow(0) |
511 uriSizer.AddGrowableRow(0) |
512 |
512 |
513 self.EditButton = wx.Button(self.ParamsEditor, label='...', size=wx.Size(30, -1)) |
513 self.EditButton = wx.Button(self.ParamsEditor, label='...', size=wx.Size(30, -1)) |
514 self.Bind(wx.EVT_BUTTON, self.UriOptions, self.EditButton) |
514 self.Bind(wx.EVT_BUTTON, self.UriOptions, self.EditButton) |
515 |
515 |
516 uriSizer.AddWindow(textctrl, flag=wx.GROW) |
516 uriSizer.Add(textctrl, flag=wx.GROW) |
517 uriSizer.AddWindow(self.EditButton, flag=wx.GROW) |
517 uriSizer.Add(self.EditButton, flag=wx.GROW) |
518 |
518 |
519 boxsizer.AddWindow(uriSizer) |
519 boxsizer.Add(uriSizer) |
520 else: |
520 else: |
521 boxsizer.AddWindow(textctrl) |
521 boxsizer.Add(textctrl) |
522 |
522 |
523 if element_infos["value"] is not None: |
523 if element_infos["value"] is not None: |
524 textctrl.ChangeValue(str(element_infos["value"])) |
524 textctrl.ChangeValue(str(element_infos["value"])) |
525 callback = self.GetTextCtrlCallBackFunction(textctrl, element_path) |
525 callback = self.GetTextCtrlCallBackFunction(textctrl, element_path) |
526 textctrl.Bind(wx.EVT_TEXT_ENTER, callback) |
526 textctrl.Bind(wx.EVT_TEXT_ENTER, callback) |