etherlab/ConfigEditor.py
changeset 2152 e6946c298a42
parent 2151 015dab6a915f
child 2165 02a2b5dee5e3
--- a/etherlab/ConfigEditor.py	Mon Jun 03 08:24:08 2013 +0200
+++ b/etherlab/ConfigEditor.py	Wed Apr 02 15:03:32 2014 +0200
@@ -13,6 +13,10 @@
 from util.BitmapLibrary import GetBitmap
 from controls.CustomStyledTextCtrl import NAVIGATION_KEYS
 
+# -----------------------------------------------------------------------
+from EtherCATManagementEditor import EtherCATManagementTreebook, MasterStatePanelClass
+# -----------------------------------------------------------------------
+
 [ETHERCAT_VENDOR, ETHERCAT_GROUP, ETHERCAT_DEVICE] = range(3)
 
 def AppendMenu(parent, help, id, kind, text):
@@ -240,7 +244,10 @@
 class NodeEditor(ConfTreeNodeEditor):
     
     CONFNODEEDITOR_TABS = [
-        (_("Ethercat node"), "_create_EthercatNodeEditor")]
+        (_("Ethercat node"), "_create_EthercatNodeEditor"),
+        # Add Notebook Tab for EtherCAT Management Treebook
+        (_("EtherCAT Management"), "_create_EtherCATManagementEditor")
+        ]
     
     def _create_EthercatNodeEditor(self, prnt):
         self.EthercatNodeEditor = wx.Panel(prnt, style=wx.TAB_TRAVERSAL)
@@ -264,6 +271,9 @@
     def __init__(self, parent, controler, window):
         ConfTreeNodeEditor.__init__(self, parent, controler, window)
         
+        # add Contoler for use EthercatSlave.py Method
+        self.Controler = controler
+        
     def GetBufferState(self):
         return False, False
         
@@ -272,8 +282,39 @@
     
         self.NodeVariables.RefreshView()
 
+    # -------------------For EtherCAT Management ----------------------------------------------    
+    def _create_EtherCATManagementEditor(self, prnt):
+        self.EtherCATManagementEditor = wx.ScrolledWindow(prnt,
+            style=wx.TAB_TRAVERSAL|wx.HSCROLL|wx.VSCROLL)
+        self.EtherCATManagementEditor.Bind(wx.EVT_SIZE, self.OnResize)
+
+        self.EtherCATManagermentEditor_Main_Sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
+        self.EtherCATManagermentEditor_Main_Sizer.AddGrowableCol(0)
+        self.EtherCATManagermentEditor_Main_Sizer.AddGrowableRow(0)
+        
+        self.EtherCATManagementTreebook = EtherCATManagementTreebook(self.EtherCATManagementEditor, self.Controler, self)
+          
+        self.EtherCATManagermentEditor_Main_Sizer.AddSizer(self.EtherCATManagementTreebook, border=10, flag=wx.GROW)
+
+        self.EtherCATManagementEditor.SetSizer(self.EtherCATManagermentEditor_Main_Sizer)
+        return self.EtherCATManagementEditor
+    
+    def OnResize(self, event):
+        self.EtherCATManagementEditor.GetBestSize()
+        xstart, ystart = self.EtherCATManagementEditor.GetViewStart()
+        window_size = self.EtherCATManagementEditor.GetClientSize()
+        maxx, maxy = self.EtherCATManagementEditor.GetMinSize()
+        posx = max(0, min(xstart, (maxx - window_size[0]) / SCROLLBAR_UNIT))
+        posy = max(0, min(ystart, (maxy - window_size[1]) / SCROLLBAR_UNIT))
+        self.EtherCATManagementEditor.Scroll(posx, posy)
+        self.EtherCATManagementEditor.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT, 
+                maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy)
+        event.Skip()
+    # -------------------------------------------------------------------------------------------------------
+
 CIA402NodeEditor = NodeEditor
 
+
 def GetProcessVariablesTableColnames():
     _ = lambda x : x
     return ["#", _("Name"), 
@@ -537,7 +578,36 @@
 class MasterEditor(ConfTreeNodeEditor):
     
     CONFNODEEDITOR_TABS = [
-        (_("Network"), "_create_EthercatMasterEditor")]
+        (_("Network"), "_create_EthercatMasterEditor"),
+        (_("Master State"), "_create_MasterStateEditor")
+        ]
+    
+    def _create_MasterStateEditor(self, prnt):
+        self.MasterStateEditor = wx.ScrolledWindow(prnt, style=wx.TAB_TRAVERSAL|wx.HSCROLL|wx.VSCROLL)
+        self.MasterStateEditor.Bind(wx.EVT_SIZE, self.OnResize)
+        
+        self.MasterStateEditor_Panel_Main_Sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
+        self.MasterStateEditor_Panel_Main_Sizer.AddGrowableCol(0)
+        self.MasterStateEditor_Panel_Main_Sizer.AddGrowableRow(0)
+        
+        self.MasterStateEditor_Panel = MasterStatePanelClass(self.MasterStateEditor, self.Controler)
+        
+        self.MasterStateEditor_Panel_Main_Sizer.AddSizer(self.MasterStateEditor_Panel, border=10, flag=wx.GROW)
+         
+        self.MasterStateEditor.SetSizer(self.MasterStateEditor_Panel_Main_Sizer)
+        return self.MasterStateEditor
+    
+    def OnResize(self, event):
+        self.MasterStateEditor.GetBestSize()
+        xstart, ystart = self.MasterStateEditor.GetViewStart()
+        window_size = self.MasterStateEditor.GetClientSize()
+        maxx, maxy = self.MasterStateEditor.GetMinSize()
+        posx = max(0, min(xstart, (maxx - window_size[0]) / SCROLLBAR_UNIT))
+        posy = max(0, min(ystart, (maxy - window_size[1]) / SCROLLBAR_UNIT))
+        self.MasterStateEditor.Scroll(posx, posy)
+        self.MasterStateEditor.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT, 
+                maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy)
+        event.Skip()
     
     def _create_EthercatMasterEditor(self, prnt):
         self.EthercatMasterEditor = wx.ScrolledWindow(prnt, 
@@ -639,6 +709,10 @@
     def __init__(self, parent, controler, window):
         ConfTreeNodeEditor.__init__(self, parent, controler, window)
         
+        # ------------------------------------------------------------------
+        self.Controler = controler
+        # ------------------------------------------------------------------
+        
         self.ProcessVariables = []
         self.CellShown = None
         self.NodesFilterFirstCharacter = True
@@ -968,6 +1042,33 @@
         self.EthercatMasterEditor.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT, 
                 maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy)
         event.Skip()
+        
+    #def OnButtonClick(self, event):
+    #    self.MasterState = self.Controler.getMasterState()
+    #    if self.MasterState:
+    #        self.Phase.SetValue(self.MasterState["phase"])
+    #        self.Active.SetValue(self.MasterState["active"])
+    #        self.SlaveCount.SetValue(self.MasterState["slave"])
+    #        self.MacAddress.SetValue(self.MasterState["MAC"])
+    #        self.LinkState.SetValue(self.MasterState["link"])
+    #        self.TxFrames.SetValue(self.MasterState["TXframe"])
+    #        self.RxFrames.SetValue(self.MasterState["RXframe"])
+    #        self.TxByte.SetValue(self.MasterState["TXbyte"])
+    #        self.TxError.SetValue(self.MasterState["TXerror"])
+    #        self.LostFrames.SetValue(self.MasterState["lost"])
+            
+    #        self.TxFrameRate1.SetValue(self.MasterState["TXframerate1"])
+    #        self.TxFrameRate2.SetValue(self.MasterState["TXframerate2"])
+    #        self.TxFrameRate3.SetValue(self.MasterState["TXframerate3"])
+    #        self.TxRate1.SetValue(self.MasterState["TXrate1"])
+    #        self.TxRate2.SetValue(self.MasterState["TXrate2"])
+    #        self.TxRate3.SetValue(self.MasterState["TXrate3"])
+    #        self.LossRate1.SetValue(self.MasterState["loss1"])
+    #        self.LossRate2.SetValue(self.MasterState["loss2"])
+    #        self.LossRate3.SetValue(self.MasterState["loss3"])
+    #        self.FrameLoss1.SetValue(self.MasterState["frameloss1"])
+    #        self.FrameLoss2.SetValue(self.MasterState["frameloss2"])
+    #        self.FrameLoss3.SetValue(self.MasterState["frameloss3"])
     
 class LibraryEditorSizer(wx.FlexGridSizer):
     
@@ -1289,5 +1390,4 @@
         self.ModuleLibraryEditor.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT, 
                 maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy)
         event.Skip()
-        
-
+        
\ No newline at end of file