470 |
470 |
471 [ID_CONFIGEDITOR, ID_CONFIGEDITORADDSLAVEBUTTON, |
471 [ID_CONFIGEDITOR, ID_CONFIGEDITORADDSLAVEBUTTON, |
472 ID_CONFIGEDITORDELETESLAVEBUTTON, ID_CONFIGEDITORSLAVENODES, |
472 ID_CONFIGEDITORDELETESLAVEBUTTON, ID_CONFIGEDITORSLAVENODES, |
473 ] = [wx.NewId() for _init_ctrls in range(4)] |
473 ] = [wx.NewId() for _init_ctrls in range(4)] |
474 |
474 |
|
475 [ID_CONFIGEDITORPLUGINMENUADDSLAVE, ID_CONFIGEDITORPLUGINMENUDELETESLAVE, |
|
476 ] = [wx.NewId() for _init_coll_PluginMenu_Items in range(2)] |
|
477 |
475 class ConfigEditor(EditorPanel): |
478 class ConfigEditor(EditorPanel): |
476 |
479 |
477 ID = ID_CONFIGEDITOR |
480 ID = ID_CONFIGEDITOR |
478 |
481 |
479 def _init_coll_MainSizer_Items(self, parent): |
482 def _init_coll_MainSizer_Items(self, parent): |
480 parent.AddSizer(self.ButtonSizer, 0, border=5, flag=wx.ALIGN_RIGHT|wx.TOP|wx.LEFT|wx.RIGHT) |
483 parent.AddWindow(self.SlaveNodes, 0, border=5, flag=wx.GROW|wx.ALL) |
481 parent.AddWindow(self.SlaveNodes, 0, border=5, flag=wx.GROW|wx.BOTTOM|wx.LEFT|wx.RIGHT) |
|
482 |
484 |
483 def _init_coll_MainSizer_Growables(self, parent): |
485 def _init_coll_MainSizer_Growables(self, parent): |
484 parent.AddGrowableCol(0) |
486 parent.AddGrowableCol(0) |
485 parent.AddGrowableRow(1) |
487 parent.AddGrowableRow(0) |
486 |
488 |
487 def _init_coll_ButtonSizer_Items(self, parent): |
|
488 parent.AddWindow(self.AddSlaveButton, 0, border=5, flag=wx.RIGHT) |
|
489 parent.AddWindow(self.DeleteSlaveButton, 0, border=5, flag=0) |
|
490 |
|
491 def _init_sizers(self): |
489 def _init_sizers(self): |
492 self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) |
490 self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=1, vgap=0) |
493 self.ButtonSizer = wx.BoxSizer(wx.HORIZONTAL) |
|
494 |
491 |
495 self._init_coll_MainSizer_Items(self.MainSizer) |
492 self._init_coll_MainSizer_Items(self.MainSizer) |
496 self._init_coll_MainSizer_Growables(self.MainSizer) |
493 self._init_coll_MainSizer_Growables(self.MainSizer) |
497 self._init_coll_ButtonSizer_Items(self.ButtonSizer) |
|
498 |
494 |
499 self.Editor.SetSizer(self.MainSizer) |
495 self.Editor.SetSizer(self.MainSizer) |
500 |
496 |
501 def _init_Editor(self, prnt): |
497 def _init_Editor(self, prnt): |
502 self.Editor = wx.Panel(id=-1, parent=prnt, pos=wx.Point(0, 0), |
498 self.Editor = wx.Panel(id=-1, parent=prnt, pos=wx.Point(0, 0), |
503 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
499 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
504 |
|
505 self.AddSlaveButton = wx.Button(id=ID_CONFIGEDITORADDSLAVEBUTTON, label=_('Add slave'), |
|
506 name='AddSlaveButton', parent=self.Editor, pos=wx.Point(0, 0), |
|
507 size=wx.DefaultSize, style=0) |
|
508 self.Bind(wx.EVT_BUTTON, self.OnAddSlaveButtonClick, id=ID_CONFIGEDITORADDSLAVEBUTTON) |
|
509 |
|
510 self.DeleteSlaveButton = wx.Button(id=ID_CONFIGEDITORDELETESLAVEBUTTON, label=_('Delete slave'), |
|
511 name='DeleteSlaveButton', parent=self.Editor, pos=wx.Point(0, 0), |
|
512 size=wx.DefaultSize, style=0) |
|
513 self.Bind(wx.EVT_BUTTON, self.OnDeleteSlaveButtonClick, id=ID_CONFIGEDITORDELETESLAVEBUTTON) |
|
514 |
500 |
515 self.SlaveNodes = wx.Notebook(id=ID_CONFIGEDITORSLAVENODES, |
501 self.SlaveNodes = wx.Notebook(id=ID_CONFIGEDITORSLAVENODES, |
516 name='SlaveNodes', parent=self.Editor, pos=wx.Point(0, 0), |
502 name='SlaveNodes', parent=self.Editor, pos=wx.Point(0, 0), |
517 size=wx.Size(0, 0), style=wx.NB_LEFT) |
503 size=wx.Size(0, 0), style=wx.NB_LEFT) |
518 |
504 |
519 self._init_sizers() |
505 self._init_sizers() |
520 |
506 |
|
507 def _init_MenuItems(self): |
|
508 self.MenuItems = [ |
|
509 (wx.ITEM_NORMAL, (_("Add slave"), ID_CONFIGEDITORPLUGINMENUADDSLAVE, '', self.OnAddSlaveMenu)), |
|
510 (wx.ITEM_NORMAL, (_("Delete slave"), ID_CONFIGEDITORPLUGINMENUDELETESLAVE, '', self.OnDeleteSlaveMenu)), |
|
511 ] |
|
512 |
521 def __init__(self, parent, controler, window): |
513 def __init__(self, parent, controler, window): |
522 EditorPanel.__init__(self, parent, "", window, controler) |
514 EditorPanel.__init__(self, parent, "", window, controler) |
523 |
515 |
524 img = wx.Bitmap(self.Controler.GetIconPath("Cfile.png"), wx.BITMAP_TYPE_PNG).ConvertToImage() |
516 img = wx.Bitmap(self.Controler.GetIconPath("Cfile.png"), wx.BITMAP_TYPE_PNG).ConvertToImage() |
525 self.SetIcon(wx.BitmapFromImage(img.Rescale(16, 16))) |
517 self.SetIcon(wx.BitmapFromImage(img.Rescale(16, 16))) |
526 |
518 |
527 def __del__(self): |
519 def __del__(self): |
528 self.Controler.OnCloseEditor() |
520 self.Controler.OnCloseEditor(self) |
529 |
521 |
530 def GetTitle(self): |
522 def GetTitle(self): |
531 fullname = self.Controler.PlugFullName() |
523 fullname = self.Controler.PlugFullName() |
532 if not self.Controler.ConfigIsSaved(): |
524 if not self.Controler.ConfigIsSaved(): |
533 return "~%s~" % fullname |
525 return "~%s~" % fullname |
554 panel = SlavePanel(self.SlaveNodes, self.Controler, self, slave) |
546 panel = SlavePanel(self.SlaveNodes, self.Controler, self, slave) |
555 self.SlaveNodes.AddPage(panel, "") |
547 self.SlaveNodes.AddPage(panel, "") |
556 while self.SlaveNodes.GetPageCount() > len(slaves): |
548 while self.SlaveNodes.GetPageCount() > len(slaves): |
557 self.SlaveNodes.RemovePage(len(slaves)) |
549 self.SlaveNodes.RemovePage(len(slaves)) |
558 self.RefreshSlaveNodesTitles() |
550 self.RefreshSlaveNodesTitles() |
559 self.RefreshButtons() |
|
560 if slave_pos is not None: |
551 if slave_pos is not None: |
561 self.SelectSlave(slave_pos) |
552 self.SelectSlave(slave_pos) |
562 |
553 |
563 def RefreshParentWindow(self): |
554 def RefreshParentWindow(self): |
564 self.ParentWindow.RefreshTitle() |
555 self.ParentWindow.RefreshTitle() |
565 self.ParentWindow.RefreshFileMenu() |
556 self.ParentWindow.RefreshFileMenu() |
566 self.ParentWindow.RefreshEditMenu() |
557 self.ParentWindow.RefreshEditMenu() |
|
558 self.ParentWindow.RefreshPluginMenu() |
567 self.ParentWindow.RefreshPageTitles() |
559 self.ParentWindow.RefreshPageTitles() |
568 |
560 |
569 def RefreshSlaveNodesTitles(self): |
561 def RefreshSlaveNodesTitles(self): |
570 for idx in xrange(self.SlaveNodes.GetPageCount()): |
562 for idx in xrange(self.SlaveNodes.GetPageCount()): |
571 panel = self.SlaveNodes.GetPage(idx) |
563 panel = self.SlaveNodes.GetPage(idx) |
572 self.SlaveNodes.SetPageText(idx, panel.GetSlaveTitle()) |
564 self.SlaveNodes.SetPageText(idx, panel.GetSlaveTitle()) |
573 |
565 |
574 def RefreshButtons(self): |
566 def RefreshPluginMenu(self, plugin_menu): |
575 self.DeleteSlaveButton.Enable(self.SlaveNodes.GetPageCount() > 0) |
567 plugin_menu.Enable(ID_CONFIGEDITORPLUGINMENUDELETESLAVE, |
|
568 self.SlaveNodes.GetPageCount() > 0) |
576 |
569 |
577 def SelectSlave(self, slave): |
570 def SelectSlave(self, slave): |
578 for idx in xrange(self.SlaveNodes.GetPageCount()): |
571 for idx in xrange(self.SlaveNodes.GetPageCount()): |
579 panel = self.SlaveNodes.GetPage(idx) |
572 panel = self.SlaveNodes.GetPage(idx) |
580 if panel.GetSlave() == slave: |
573 if panel.GetSlave() == slave: |
581 self.SlaveNodes.SetSelection(idx) |
574 self.SlaveNodes.SetSelection(idx) |
582 return |
575 return |
583 |
576 |
584 def OnAddSlaveButtonClick(self, event): |
577 def OnAddSlaveMenu(self, event): |
585 slave = self.Controler.AddSlave() |
578 slave = self.Controler.AddSlave() |
586 self.RefreshParentWindow() |
579 self.RefreshParentWindow() |
587 wx.CallAfter(self.RefreshView, slave) |
580 wx.CallAfter(self.RefreshView, slave) |
588 event.Skip() |
581 |
589 |
582 def OnDeleteSlaveMenu(self, event): |
590 def OnDeleteSlaveButtonClick(self, event): |
|
591 selected = self.SlaveNodes.GetSelection() |
583 selected = self.SlaveNodes.GetSelection() |
592 if selected != -1: |
584 if selected != -1: |
593 panel = self.SlaveNodes.GetPage(selected) |
585 panel = self.SlaveNodes.GetPage(selected) |
594 if self.Controler.RemoveSlave(panel.GetSlave()[:2]): |
586 if self.Controler.RemoveSlave(panel.GetSlave()[:2]): |
595 self.RefreshParentWindow() |
587 self.RefreshParentWindow() |