415 minimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208)) |
415 minimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208)) |
416 minimizebutton.labelDelta = 0 |
416 minimizebutton.labelDelta = 0 |
417 minimizebutton.SetBezelWidth(0) |
417 minimizebutton.SetBezelWidth(0) |
418 minimizebutton.SetUseFocusIndicator(False) |
418 minimizebutton.SetUseFocusIndicator(False) |
419 minimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png'))) |
419 minimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png'))) |
|
420 plcwindowbuttonsizer.AddWindow(minimizebutton, 0, border=5, flag=wx.ALL) |
|
421 |
|
422 self.PLCConfigMainSizer.Layout() |
|
423 self.RefreshScrollBars() |
|
424 |
|
425 if len(self.PluginRoot.PlugChildsTypes) > 0: |
|
426 addsizer = self.GenerateAddButtonSizer(self.PluginRoot, plcwindow) |
|
427 plcwindowbuttonsizer.AddSizer(addsizer, 0, border=0, flag=0) |
|
428 else: |
|
429 addsizer = None |
|
430 |
420 def togglewindow(event): |
431 def togglewindow(event): |
421 if minimizebutton.GetToggle(): |
432 if minimizebutton.GetToggle(): |
422 paramswindow.Show() |
433 paramswindow.Show() |
423 msizer.SetCols(1) |
434 msizer.SetCols(1) |
|
435 if addsizer is not None: |
|
436 addsizer.SetCols(1) |
424 else: |
437 else: |
425 paramswindow.Hide() |
438 paramswindow.Hide() |
426 msizer.SetCols(len(self.PluginRoot.PluginMethods)) |
439 msizer.SetCols(len(self.PluginRoot.PluginMethods)) |
|
440 if addsizer is not None: |
|
441 addsizer.SetCols(len(self.PluginRoot.PlugChildsTypes)) |
427 self.PLCConfigMainSizer.Layout() |
442 self.PLCConfigMainSizer.Layout() |
428 self.RefreshScrollBars() |
443 self.RefreshScrollBars() |
429 event.Skip() |
444 event.Skip() |
430 minimizebutton.Bind(wx.EVT_BUTTON, togglewindow, id=minimizebutton_id) |
445 minimizebutton.Bind(wx.EVT_BUTTON, togglewindow, id=minimizebutton_id) |
431 plcwindowbuttonsizer.AddWindow(minimizebutton, 0, border=5, flag=wx.ALL) |
446 |
432 |
447 |
433 self.PLCConfigMainSizer.Layout() |
448 def GenerateAddButtonSizer(self, plugin, parent, horizontal = True): |
434 self.RefreshScrollBars() |
449 if horizontal: |
435 |
450 addsizer = wx.FlexGridSizer(cols=len(plugin.PluginMethods)) |
436 if len(self.PluginRoot.PlugChildsTypes) > 0: |
451 else: |
437 plcwindowmainsizer.AddSizer(self.GenerateAddButtonSizer(self.PluginRoot, plcwindow), 0, border=0, flag=wx.ALIGN_CENTER) |
452 addsizer = wx.FlexGridSizer(cols=1) |
438 |
|
439 def GenerateAddButtonSizer(self, plugin, parent): |
|
440 addsizer = wx.BoxSizer(wx.HORIZONTAL) |
|
441 for name, XSDClass in plugin.PlugChildsTypes: |
453 for name, XSDClass in plugin.PlugChildsTypes: |
442 addbutton_id = wx.NewId() |
454 addbutton_id = wx.NewId() |
443 addbutton = wx.lib.buttons.GenButton(id=addbutton_id, label="Add %s"%name, |
455 addbutton = wx.lib.buttons.GenButton(id=addbutton_id, label="Add %s"%name, |
444 name='AddBusButton', parent=parent, pos=wx.Point(0, 0), |
456 name='AddBusButton', parent=parent, pos=wx.Point(0, 0), |
445 style=wx.NO_BORDER) |
457 style=wx.NO_BORDER) |
484 self.RefreshScrollBars() |
496 self.RefreshScrollBars() |
485 |
497 |
486 def ExpandPlugin(self, plugin, force = False): |
498 def ExpandPlugin(self, plugin, force = False): |
487 for child in self.PluginInfos[plugin]["children"]: |
499 for child in self.PluginInfos[plugin]["children"]: |
488 self.PluginTreeSizer.Show(self.PluginInfos[child]["left"]) |
500 self.PluginTreeSizer.Show(self.PluginInfos[child]["left"]) |
|
501 self.PluginTreeSizer.Show(self.PluginInfos[child]["middle"]) |
489 self.PluginTreeSizer.Show(self.PluginInfos[child]["right"]) |
502 self.PluginTreeSizer.Show(self.PluginInfos[child]["right"]) |
490 if force or not self.PluginInfos[child]["expanded"]: |
503 if force or not self.PluginInfos[child]["expanded"]: |
491 self.ExpandPlugin(child, force) |
504 self.ExpandPlugin(child, force) |
492 if force: |
505 if force: |
493 self.PluginInfos[child]["expanded"] = True |
506 self.PluginInfos[child]["expanded"] = True |
494 |
507 |
495 def CollapsePlugin(self, plugin, force = False): |
508 def CollapsePlugin(self, plugin, force = False): |
496 for child in self.PluginInfos[plugin]["children"]: |
509 for child in self.PluginInfos[plugin]["children"]: |
497 self.PluginTreeSizer.Hide(self.PluginInfos[child]["left"]) |
510 self.PluginTreeSizer.Hide(self.PluginInfos[child]["left"]) |
|
511 self.PluginTreeSizer.Hide(self.PluginInfos[child]["middle"]) |
498 self.PluginTreeSizer.Hide(self.PluginInfos[child]["right"]) |
512 self.PluginTreeSizer.Hide(self.PluginInfos[child]["right"]) |
499 if force or self.PluginInfos[child]["expanded"]: |
513 if force or self.PluginInfos[child]["expanded"]: |
500 self.CollapsePlugin(child, force) |
514 self.CollapsePlugin(child, force) |
501 if force: |
515 if force: |
502 self.PluginInfos[child]["expanded"] = False |
516 self.PluginInfos[child]["expanded"] = False |
583 tc.SetValue(plugin.MandatoryParams[1].getName()) |
597 tc.SetValue(plugin.MandatoryParams[1].getName()) |
584 tc.Bind(wx.EVT_TEXT_ENTER, self.GetTextCtrlCallBackFunction(tc, plugin, "BaseParams.Name"), id=tc_id) |
598 tc.Bind(wx.EVT_TEXT_ENTER, self.GetTextCtrlCallBackFunction(tc, plugin, "BaseParams.Name"), id=tc_id) |
585 leftbuttonsizer.AddWindow(tc, 0, border=5, flag=wx.RIGHT|wx.ALIGN_CENTER_VERTICAL) |
599 leftbuttonsizer.AddWindow(tc, 0, border=5, flag=wx.RIGHT|wx.ALIGN_CENTER_VERTICAL) |
586 |
600 |
587 enablebutton_id = wx.NewId() |
601 enablebutton_id = wx.NewId() |
588 enablebutton = wx.lib.buttons.GenBitmapTextToggleButton(id=enablebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Disabled.png')), |
602 enablebutton = wx.lib.buttons.GenBitmapToggleButton(id=enablebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Disabled.png')), |
589 name='EnableButton', parent=leftwindow, pos=wx.Point(0, 0), label="Enabled", style=wx.NO_BORDER) |
603 name='EnableButton', parent=leftwindow, pos=wx.Point(0, 0), style=wx.NO_BORDER) |
|
604 enablebutton.SetToolTipString("Enable/Disable this plugin") |
590 enablebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(enablebutton) |
605 enablebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(enablebutton) |
591 enablebutton.SetBackgroundColour(wx.Colour(208, 208, 208)) |
606 enablebutton.SetBackgroundColour(wx.Colour(208, 208, 208)) |
592 enablebutton._GetLabelSize = gen_mini_GetLabelSize(enablebutton) |
|
593 enablebutton.labelDelta = 0 |
607 enablebutton.labelDelta = 0 |
594 enablebutton.SetBezelWidth(0) |
608 enablebutton.SetBezelWidth(0) |
595 enablebutton.SetUseFocusIndicator(False) |
609 enablebutton.SetUseFocusIndicator(False) |
596 enablebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Enabled.png'))) |
610 enablebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Enabled.png'))) |
597 enablebutton.SetToggle(plugin.MandatoryParams[1].getEnabled()) |
611 enablebutton.SetToggle(plugin.MandatoryParams[1].getEnabled()) |
639 for location in locations: |
653 for location in locations: |
640 lb.Append(location["NAME"].replace("__", "%").replace("_", ".")) |
654 lb.Append(location["NAME"].replace("__", "%").replace("_", ".")) |
641 if not self.PluginInfos[plugin]["left_visible"]: |
655 if not self.PluginInfos[plugin]["left_visible"]: |
642 lb.Hide() |
656 lb.Hide() |
643 self.PluginInfos[plugin]["variable_list"] = lb |
657 self.PluginInfos[plugin]["variable_list"] = lb |
644 if len(plugin.PlugChildsTypes) > 0: |
658 leftwindowsizer.AddWindow(lb, 0, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.BOTTOM) |
645 leftwindowsizer.AddWindow(lb, 0, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT) |
659 |
646 leftwindowsizer.AddSizer(self.GenerateAddButtonSizer(plugin, leftwindow), 0, border=5, flag=wx.LEFT|wx.RIGHT|wx.BOTTOM) |
660 middlewindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1)) |
647 else: |
661 middlewindow.SetBackgroundColour(wx.Colour(240,240,240)) |
648 leftwindowsizer.AddWindow(lb, 0, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.BOTTOM) |
662 |
649 |
663 self.PluginTreeSizer.AddWindow(middlewindow, 0, border=0, flag=wx.GROW) |
|
664 |
|
665 middlewindowmainsizer = wx.BoxSizer(wx.VERTICAL) |
|
666 middlewindow.SetSizer(middlewindowmainsizer) |
|
667 |
|
668 middlewindowsizer = wx.FlexGridSizer(cols=2, rows=1) |
|
669 middlewindowsizer.AddGrowableCol(1) |
|
670 middlewindowsizer.AddGrowableRow(0) |
|
671 middlewindowmainsizer.AddSizer(middlewindowsizer, 0, border=17, flag=wx.TOP|wx.GROW) |
|
672 |
|
673 msizer = self.GenerateMethodButtonSizer(plugin, middlewindow, not self.PluginInfos[plugin]["middle_visible"]) |
|
674 middlewindowsizer.AddSizer(msizer, 0, border=0, flag=wx.GROW) |
|
675 |
|
676 middleparamssizer = wx.BoxSizer(wx.HORIZONTAL) |
|
677 middlewindowsizer.AddSizer(middleparamssizer, 0, border=0, flag=wx.ALIGN_RIGHT) |
|
678 |
|
679 paramswindow = wx.Panel(middlewindow, -1, size=wx.Size(-1, -1)) |
|
680 paramswindow.SetBackgroundColour(WINDOW_COLOUR) |
|
681 |
|
682 psizer = wx.BoxSizer(wx.HORIZONTAL) |
|
683 paramswindow.SetSizer(psizer) |
|
684 |
|
685 middleparamssizer.AddWindow(paramswindow, 0, border=5, flag=wx.ALL) |
|
686 |
|
687 plugin_infos = plugin.GetParamsAttributes() |
|
688 self.RefreshSizerElement(paramswindow, psizer, plugin, plugin_infos, None, False) |
|
689 |
|
690 if not self.PluginInfos[plugin]["middle_visible"]: |
|
691 paramswindow.Hide() |
|
692 |
|
693 middleminimizebutton_id = wx.NewId() |
|
694 middleminimizebutton = wx.lib.buttons.GenBitmapToggleButton(id=middleminimizebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Maximize.png')), |
|
695 name='MinimizeButton', parent=middlewindow, pos=wx.Point(0, 0), |
|
696 size=wx.Size(24, 24), style=wx.NO_BORDER) |
|
697 middleminimizebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(middleminimizebutton) |
|
698 middleminimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208)) |
|
699 middleminimizebutton.labelDelta = 0 |
|
700 middleminimizebutton.SetBezelWidth(0) |
|
701 middleminimizebutton.SetUseFocusIndicator(False) |
|
702 middleminimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png'))) |
|
703 middleminimizebutton.SetToggle(self.PluginInfos[plugin]["middle_visible"]) |
|
704 middleparamssizer.AddWindow(middleminimizebutton, 0, border=5, flag=wx.ALL) |
|
705 |
650 rightwindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1)) |
706 rightwindow = wx.Panel(self.PLCConfig, -1, size=wx.Size(-1, -1)) |
651 rightwindow.SetBackgroundColour(wx.Colour(240,240,240)) |
707 rightwindow.SetBackgroundColour(wx.Colour(240,240,240)) |
652 |
708 |
653 self.PluginTreeSizer.AddWindow(rightwindow, 0, border=0, flag=wx.GROW) |
709 self.PluginTreeSizer.AddWindow(rightwindow, 0, border=0, flag=wx.GROW) |
654 |
710 |
655 rightwindowmainsizer = wx.BoxSizer(wx.VERTICAL) |
711 rightsizer = wx.BoxSizer(wx.VERTICAL) |
656 rightwindow.SetSizer(rightwindowmainsizer) |
712 rightwindow.SetSizer(rightsizer) |
657 |
713 |
658 rightwindowsizer = wx.FlexGridSizer(cols=2, rows=1) |
714 rightmainsizer = wx.BoxSizer(wx.VERTICAL) |
659 rightwindowsizer.AddGrowableCol(1) |
715 rightsizer.AddSizer(rightmainsizer, 0, border=5, flag=wx.ALL) |
660 rightwindowsizer.AddGrowableRow(0) |
716 |
661 rightwindowmainsizer.AddSizer(rightwindowsizer, 0, border=17, flag=wx.TOP|wx.GROW) |
717 if len(plugin.PlugChildsTypes) > 0: |
662 |
718 addsizer = self.GenerateAddButtonSizer(plugin, rightwindow) |
663 msizer = self.GenerateMethodButtonSizer(plugin, rightwindow, not self.PluginInfos[plugin]["right_visible"]) |
719 rightmainsizer.AddSizer(addsizer, 0, border=12, flag=wx.TOP) |
664 rightwindowsizer.AddSizer(msizer, 0, border=0, flag=wx.GROW) |
720 else: |
665 |
721 addsizer = None |
666 rightparamssizer = wx.BoxSizer(wx.HORIZONTAL) |
722 |
667 rightwindowsizer.AddSizer(rightparamssizer, 0, border=0, flag=wx.ALIGN_RIGHT) |
723 def togglemiddlerightwindow(event): |
668 |
724 if middleminimizebutton.GetToggle(): |
669 paramswindow = wx.Panel(rightwindow, -1, size=wx.Size(-1, -1)) |
725 middleparamssizer.Show(0) |
670 paramswindow.SetBackgroundColour(WINDOW_COLOUR) |
|
671 |
|
672 psizer = wx.BoxSizer(wx.HORIZONTAL) |
|
673 paramswindow.SetSizer(psizer) |
|
674 |
|
675 rightparamssizer.AddWindow(paramswindow, 0, border=5, flag=wx.ALL) |
|
676 |
|
677 plugin_infos = plugin.GetParamsAttributes() |
|
678 self.RefreshSizerElement(paramswindow, psizer, plugin, plugin_infos, None, False) |
|
679 |
|
680 if not self.PluginInfos[plugin]["right_visible"]: |
|
681 paramswindow.Hide() |
|
682 |
|
683 rightminimizebutton_id = wx.NewId() |
|
684 rightminimizebutton = wx.lib.buttons.GenBitmapToggleButton(id=rightminimizebutton_id, bitmap=wx.Bitmap(os.path.join(CWD, 'images', 'Maximize.png')), |
|
685 name='MinimizeButton', parent=rightwindow, pos=wx.Point(0, 0), |
|
686 size=wx.Size(24, 24), style=wx.NO_BORDER) |
|
687 rightminimizebutton.GetBackgroundBrush = gen_mini_GetBackgroundBrush(rightminimizebutton) |
|
688 rightminimizebutton.SetBackgroundColour(wx.Colour(208, 208, 208)) |
|
689 rightminimizebutton.labelDelta = 0 |
|
690 rightminimizebutton.SetBezelWidth(0) |
|
691 rightminimizebutton.SetUseFocusIndicator(False) |
|
692 rightminimizebutton.SetBitmapSelected(wx.Bitmap(os.path.join(CWD, 'images', 'Minimize.png'))) |
|
693 rightminimizebutton.SetToggle(self.PluginInfos[plugin]["right_visible"]) |
|
694 def togglerightwindow(event): |
|
695 if rightminimizebutton.GetToggle(): |
|
696 rightparamssizer.Show(0) |
|
697 msizer.SetCols(1) |
726 msizer.SetCols(1) |
|
727 if addsizer is not None: |
|
728 addsizer.SetCols(1) |
698 else: |
729 else: |
699 rightparamssizer.Hide(0) |
730 middleparamssizer.Hide(0) |
700 msizer.SetCols(len(plugin.PluginMethods)) |
731 msizer.SetCols(len(plugin.PluginMethods)) |
701 self.PluginInfos[plugin]["right_visible"] = rightminimizebutton.GetToggle() |
732 if addsizer is not None: |
|
733 addsizer.SetCols(len(plugin.PlugChildsTypes)) |
|
734 self.PluginInfos[plugin]["middle_visible"] = middleminimizebutton.GetToggle() |
702 self.PLCConfigMainSizer.Layout() |
735 self.PLCConfigMainSizer.Layout() |
703 self.RefreshScrollBars() |
736 self.RefreshScrollBars() |
704 event.Skip() |
737 event.Skip() |
705 rightminimizebutton.Bind(wx.EVT_BUTTON, togglerightwindow, id=rightminimizebutton_id) |
738 middleminimizebutton.Bind(wx.EVT_BUTTON, togglemiddlerightwindow, id=middleminimizebutton_id) |
706 rightparamssizer.AddWindow(rightminimizebutton, 0, border=5, flag=wx.ALL) |
739 |
707 |
|
708 self.PluginInfos[plugin]["left"] = index[0] |
740 self.PluginInfos[plugin]["left"] = index[0] |
709 self.PluginInfos[plugin]["right"] = index[0] + 1 |
741 self.PluginInfos[plugin]["middle"] = index[0] + 1 |
710 index[0] += 2 |
742 self.PluginInfos[plugin]["right"] = index[0] + 2 |
|
743 index[0] += 3 |
711 for child in self.PluginInfos[plugin]["children"]: |
744 for child in self.PluginInfos[plugin]["children"]: |
712 self.GenerateTreeBranch(child, index) |
745 self.GenerateTreeBranch(child, index) |
713 if not self.PluginInfos[child]["expanded"]: |
746 if not self.PluginInfos[child]["expanded"]: |
714 self.CollapsePlugin(child) |
747 self.CollapsePlugin(child) |
715 |
748 |