etherlab/EtherCATManagementEditor.py
branchwxPython4
changeset 3303 0ffb41625592
parent 2643 b98d9e08231f
child 3572 b46af5b80c7d
equal deleted inserted replaced
3302:c89fc366bebd 3303:0ffb41625592
    13 import string
    13 import string
    14 from xml.dom import minidom
    14 from xml.dom import minidom
    15 
    15 
    16 import wx
    16 import wx
    17 import wx.grid
    17 import wx.grid
    18 import wx.gizmos
    18 import wx.adv
    19 import wx.lib.buttons
    19 import wx.lib.buttons
    20 
    20 
    21 # --------------------------------------------------------------------
    21 # --------------------------------------------------------------------
    22 from controls import CustomGrid, CustomTable
    22 from controls import CustomGrid, CustomTable
    23 from runtime import PlcStatus
    23 from runtime import PlcStatus
   133             self.StaticTextDic[statictext_name] = wx.StaticText(self, label=_(statictext_label))
   133             self.StaticTextDic[statictext_name] = wx.StaticText(self, label=_(statictext_label))
   134             self.TextCtrlDic[textctrl_name] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
   134             self.TextCtrlDic[textctrl_name] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
   135             self.SizerDic["SlaveInfosDetailsInnerSizer"].AddMany([self.StaticTextDic[statictext_name],
   135             self.SizerDic["SlaveInfosDetailsInnerSizer"].AddMany([self.StaticTextDic[statictext_name],
   136                                                                   self.TextCtrlDic[textctrl_name]])
   136                                                                   self.TextCtrlDic[textctrl_name]])
   137 
   137 
   138         self.SizerDic["SlaveInfosDetailsBox"].AddSizer(self.SizerDic["SlaveInfosDetailsInnerSizer"])
   138         self.SizerDic["SlaveInfosDetailsBox"].Add(self.SizerDic["SlaveInfosDetailsInnerSizer"])
   139 
   139 
   140         self.SyncManagersGrid = CustomGrid(self, size=wx.Size(605, 155), style=wx.VSCROLL)
   140         self.SyncManagersGrid = CustomGrid(self, size=wx.Size(605, 155), style=wx.VSCROLL)
   141 
   141 
   142         self.SizerDic["SyncManagerInnerSizer"].Add(self.SyncManagersGrid)
   142         self.SizerDic["SyncManagerInnerSizer"].Add(self.SyncManagersGrid)
   143         self.SizerDic["SyncManagerBox"].Add(self.SizerDic["SyncManagerInnerSizer"])
   143         self.SizerDic["SyncManagerBox"].Add(self.SizerDic["SyncManagerInnerSizer"])
   151                 ("CurrentStateLabel", "Current State:", "CurrentState")])
   151                 ("CurrentStateLabel", "Current State:", "CurrentState")])
   152         ]
   152         ]
   153         for button_name, button_id, button_label, button_tooltipstring, event_method, sub_item in buttons:
   153         for button_name, button_id, button_label, button_tooltipstring, event_method, sub_item in buttons:
   154             self.ButtonDic[button_name] = wx.Button(self, id=button_id, label=_(button_label))
   154             self.ButtonDic[button_name] = wx.Button(self, id=button_id, label=_(button_label))
   155             self.ButtonDic[button_name].Bind(wx.EVT_BUTTON, event_method)
   155             self.ButtonDic[button_name].Bind(wx.EVT_BUTTON, event_method)
   156             self.ButtonDic[button_name].SetToolTipString(button_tooltipstring)
   156             self.ButtonDic[button_name].SetToolTip(button_tooltipstring)
   157             self.SizerDic["SlaveState_up_sizer"].Add(self.ButtonDic[button_name])
   157             self.SizerDic["SlaveState_up_sizer"].Add(self.ButtonDic[button_name])
   158             for statictext_name, statictext_label, textctrl_name in sub_item:
   158             for statictext_name, statictext_label, textctrl_name in sub_item:
   159                 self.StaticTextDic[statictext_name] = wx.StaticText(self, label=_(statictext_label))
   159                 self.StaticTextDic[statictext_name] = wx.StaticText(self, label=_(statictext_label))
   160                 self.TextCtrlDic[textctrl_name] = wx.TextCtrl(self, size=wx.DefaultSize, style=wx.TE_READONLY)
   160                 self.TextCtrlDic[textctrl_name] = wx.TextCtrl(self, size=wx.DefaultSize, style=wx.TE_READONLY)
   161                 self.SizerDic["SlaveState_up_sizer"].AddMany([self.StaticTextDic[statictext_name],
   161                 self.SizerDic["SlaveState_up_sizer"].AddMany([self.StaticTextDic[statictext_name],
   164         for button_name, button_label, button_tooltipstring, event_method in [
   164         for button_name, button_label, button_tooltipstring, event_method in [
   165                 ("StartTimerButton", "Start State Monitoring", "Slave State Update Restart", self.StartTimer),
   165                 ("StartTimerButton", "Start State Monitoring", "Slave State Update Restart", self.StartTimer),
   166                 ("StopTimerButton", "Stop State Monitoring", "Slave State Update Stop", self.CurrentStateThreadStop)]:
   166                 ("StopTimerButton", "Stop State Monitoring", "Slave State Update Stop", self.CurrentStateThreadStop)]:
   167             self.ButtonDic[button_name] = wx.Button(self, label=_(button_label))
   167             self.ButtonDic[button_name] = wx.Button(self, label=_(button_label))
   168             self.ButtonDic[button_name].Bind(wx.EVT_BUTTON, event_method)
   168             self.ButtonDic[button_name].Bind(wx.EVT_BUTTON, event_method)
   169             self.ButtonDic[button_name].SetToolTipString(button_tooltipstring)
   169             self.ButtonDic[button_name].SetToolTip(button_tooltipstring)
   170             self.SizerDic["SlaveState_down_sizer"].Add(self.ButtonDic[button_name])
   170             self.SizerDic["SlaveState_down_sizer"].Add(self.ButtonDic[button_name])
   171 
   171 
   172         self.SizerDic["SlaveState_sizer"].AddMany([self.SizerDic["SlaveState_up_sizer"],
   172         self.SizerDic["SlaveState_sizer"].AddMany([self.SizerDic["SlaveState_up_sizer"],
   173                                                    self.SizerDic["SlaveState_down_sizer"]])
   173                                                    self.SizerDic["SlaveState_down_sizer"]])
   174 
   174 
  1727         @param controler: _EthercatSlaveCTN class in EthercatSlave.py
  1727         @param controler: _EthercatSlaveCTN class in EthercatSlave.py
  1728         """
  1728         """
  1729 
  1729 
  1730         wx.Panel.__init__(self, parent, -1, size=(350, 500))
  1730         wx.Panel.__init__(self, parent, -1, size=(350, 500))
  1731 
  1731 
  1732         self.Tree = wx.gizmos.TreeListCtrl(self, -1, size=(350, 500),
  1732         self.Tree = wx.adv.TreeListCtrl(self, -1, size=(350, 500),
  1733                                            style=(wx.TR_DEFAULT_STYLE |
  1733                                            style=(wx.TR_DEFAULT_STYLE |
  1734                                                   wx.TR_FULL_ROW_HIGHLIGHT |
  1734                                                   wx.TR_FULL_ROW_HIGHLIGHT |
  1735                                                   wx.TR_HIDE_ROOT |
  1735                                                   wx.TR_HIDE_ROOT |
  1736                                                   wx.TR_COLUMN_LINES |
  1736                                                   wx.TR_COLUMN_LINES |
  1737                                                   wx.TR_ROW_LINES))
  1737                                                   wx.TR_ROW_LINES))
  2690                 ('Slaves', 'Slave Count:')]:
  2690                 ('Slaves', 'Slave Count:')]:
  2691             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2691             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2692             self.TextCtrl[key] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2692             self.TextCtrl[key] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2693             self.MasterStateSizer['innerMasterState'].AddMany([self.StaticText[key], self.TextCtrl[key]])
  2693             self.MasterStateSizer['innerMasterState'].AddMany([self.StaticText[key], self.TextCtrl[key]])
  2694 
  2694 
  2695         self.MasterStateSizer['masterState'].AddSizer(self.MasterStateSizer['innerMasterState'])
  2695         self.MasterStateSizer['masterState'].Add(self.MasterStateSizer['innerMasterState'])
  2696 
  2696 
  2697         # ----------------------- Ethernet Network Card Information ---------------------------------------
  2697         # ----------------------- Ethernet Network Card Information ---------------------------------------
  2698         for key, label in [
  2698         for key, label in [
  2699                 ('Main', 'MAC Address:'),
  2699                 ('Main', 'MAC Address:'),
  2700                 ('Link', 'Link State:'),
  2700                 ('Link', 'Link State:'),
  2703                 ('Lost frames', 'Lost Frames:')]:
  2703                 ('Lost frames', 'Lost Frames:')]:
  2704             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2704             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2705             self.TextCtrl[key] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2705             self.TextCtrl[key] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2706             self.MasterStateSizer['innerDeviceInfo'].AddMany([self.StaticText[key], self.TextCtrl[key]])
  2706             self.MasterStateSizer['innerDeviceInfo'].AddMany([self.StaticText[key], self.TextCtrl[key]])
  2707 
  2707 
  2708         self.MasterStateSizer['deviceInfo'].AddSizer(self.MasterStateSizer['innerDeviceInfo'])
  2708         self.MasterStateSizer['deviceInfo'].Add(self.MasterStateSizer['innerDeviceInfo'])
  2709 
  2709 
  2710         # ----------------------- Network Frame Information -----------------------------------------------
  2710         # ----------------------- Network Frame Information -----------------------------------------------
  2711         for key, label in [
  2711         for key, label in [
  2712             ("Tx frame rate [1/s]", "Tx Frame Rate [1/s]:"), 
  2712             ("Tx frame rate [1/s]", "Tx Frame Rate [1/s]:"), 
  2713             ("Tx rate [KByte/s]", "Tx Rate [KByte/s]:"), 
  2713             ("Tx rate [KByte/s]", "Tx Rate [KByte/s]:"), 
  2720             self.TextCtrl[key] = {}
  2720             self.TextCtrl[key] = {}
  2721             for index in ['0', '1', '2']:
  2721             for index in ['0', '1', '2']:
  2722                 self.TextCtrl[key][index] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2722                 self.TextCtrl[key][index] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2723                 self.MasterStateSizer['innerFrameInfo'].Add(self.TextCtrl[key][index])
  2723                 self.MasterStateSizer['innerFrameInfo'].Add(self.TextCtrl[key][index])
  2724 
  2724 
  2725         self.MasterStateSizer['frameInfo'].AddSizer(self.MasterStateSizer['innerFrameInfo'])
  2725         self.MasterStateSizer['frameInfo'].Add(self.MasterStateSizer['innerFrameInfo'])
  2726 
  2726 
  2727         # ------------------------------- Slave Information  -----------------------------------------------
  2727         # ------------------------------- Slave Information  -----------------------------------------------
  2728         self.SITreeListCtrl = SITreeListCtrl(self, self.Controler) 
  2728         self.SITreeListCtrl = SITreeListCtrl(self, self.Controler) 
  2729         self.MasterStateSizer["innerSlaveInfo"].AddMany([self.SIUpdateButton,
  2729         self.MasterStateSizer["innerSlaveInfo"].AddMany([self.SIUpdateButton,
  2730                                                                self.SITreeListCtrl])
  2730                                                                self.SITreeListCtrl])
  2731         self.MasterStateSizer["slaveInfo"].AddSizer(
  2731         self.MasterStateSizer["slaveInfo"].Add(
  2732                 self.MasterStateSizer["innerSlaveInfo"]) 
  2732                 self.MasterStateSizer["innerSlaveInfo"]) 
  2733 
  2733 
  2734         # --------------------------------- Main Sizer ----------------------------------------------------
  2734         # --------------------------------- Main Sizer ----------------------------------------------------
  2735         self.MasterStateSizer["main"].Add(self.MSUpdateButton)
  2735         self.MasterStateSizer["main"].Add(self.MSUpdateButton)
  2736         for key, sub, in [
  2736         for key, sub, in [
  2741             ("innerBottom", [
  2741             ("innerBottom", [
  2742                     "slaveInfo"]),
  2742                     "slaveInfo"]),
  2743             ("main", [
  2743             ("main", [
  2744                     "innerTop", "innerMiddle", "innerBottom"])]:
  2744                     "innerTop", "innerMiddle", "innerBottom"])]:
  2745             for key2 in sub:
  2745             for key2 in sub:
  2746                 self.MasterStateSizer[key].AddSizer(self.MasterStateSizer[key2])
  2746                 self.MasterStateSizer[key].Add(self.MasterStateSizer[key2])
  2747 
  2747 
  2748         self.SetSizer(self.MasterStateSizer["main"])
  2748         self.SetSizer(self.MasterStateSizer["main"])
  2749     
  2749     
  2750     def OnMSUpdateButtonClick(self, event):
  2750     def OnMSUpdateButtonClick(self, event):
  2751         """
  2751         """
  2796 
  2796 
  2797         wx.Panel.__init__(self, parent, -1, size=wx.Size(750, 350))
  2797         wx.Panel.__init__(self, parent, -1, size=wx.Size(750, 350))
  2798 
  2798 
  2799         self.Controler=controler
  2799         self.Controler=controler
  2800         
  2800         
  2801         self.Tree = wx.gizmos.TreeListCtrl(self, -1, size=wx.Size(750,350), 
  2801         self.Tree = wx.adv.TreeListCtrl(self, -1, size=wx.Size(750,350), 
  2802                                                             style=wx.TR_HAS_BUTTONS
  2802                                                             style=wx.TR_HAS_BUTTONS
  2803                                                             |wx.TR_HIDE_ROOT
  2803                                                             |wx.TR_HIDE_ROOT
  2804                                                             |wx.TR_ROW_LINES
  2804                                                             |wx.TR_ROW_LINES
  2805                                                             |wx.TR_COLUMN_LINES
  2805                                                             |wx.TR_COLUMN_LINES
  2806                                                             |wx.TR_FULL_ROW_HIGHLIGHT)
  2806                                                             |wx.TR_FULL_ROW_HIGHLIGHT)