PLCOpenEditor.py
changeset 361 62570186dad4
parent 359 363af30a8b83
child 366 764a7584022c
--- a/PLCOpenEditor.py	Thu May 28 08:10:18 2009 +0200
+++ b/PLCOpenEditor.py	Sat May 30 17:15:22 2009 +0200
@@ -1295,6 +1295,8 @@
             if selected != -1:
                 window = self.TabsOpened.GetPage(selected)
                 window.SetScale(idx)
+                window.RefreshVisibleElements()
+                window.RefreshScrollBars()
             event.Skip()
         return ZoomFunction
 
@@ -4534,9 +4536,10 @@
 #                            Variables Editor Panel
 #-------------------------------------------------------------------------------
 
-class VariableTableItem:
+class VariableTableItem(DebugDataConsumer):
     
     def __init__(self, parent, variable, value):
+        DebugDataConsumer.__init__(self)
         self.Parent = parent
         self.Variable = variable
         self.Value = value
@@ -4553,12 +4556,12 @@
         return self.Variable
     
     def SetValue(self, value):
-        if self.Parent and self.Value != value:
+        if self.Value != value:
             self.Value = value
-            self.Parent.RefreshGrid()
+            self.Parent.NewDataAvailable()
     
     def GetValue(self):
-        return self.Value    
+        return self.Value
 
 class DebugVariableTable(wx.grid.PyGridTableBase):
     
@@ -4716,10 +4719,10 @@
 
 [ID_DEBUGVARIABLEPANEL, ID_DEBUGVARIABLEPANELVARIABLESGRID, 
  ID_DEBUGVARIABLEPANELUPBUTTON, ID_DEBUGVARIABLEPANELDOWNBUTTON, 
- ID_DEBUGVARIABLEPANELDELETEBUTTON, 
+ ID_DEBUGVARIABLEPANELDELETEBUTTON,
 ] = [wx.NewId() for _init_ctrls in range(5)]
 
-class DebugVariablePanel(wx.Panel):
+class DebugVariablePanel(wx.Panel, DebugViewer):
     
     if wx.VERSION < (2, 6, 0):
         def Bind(self, event, function, id = None):
@@ -4786,9 +4789,10 @@
     
     def __init__(self, parent, controler):
         self._init_ctrls(parent)
+        DebugViewer.__init__(self, controler, True)
         self.Controler = controler
         
-        self.Table = DebugVariableTable(self, [], ["Variable", "Value"])    
+        self.Table = DebugVariableTable(self, [], ["Variable", "Value"])
         self.VariablesGrid.SetTable(self.Table)
         self.VariablesGrid.SetRowLabelSize(0)
         
@@ -4797,20 +4801,21 @@
             attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER)
             self.VariablesGrid.SetColAttr(col, attr)
             self.VariablesGrid.SetColSize(col, 100)
-    
+        
         self.Table.ResetView(self.VariablesGrid)
     
-    def __del__(self):
-        for item in self.Table.GetData():
-            self.Controler.UnsubscribeDebugIECVariable(item.GetVariable().upper(), item)
+    def RefreshNewData(self):
+        self.RefreshGrid()
     
     def RefreshGrid(self):
+        self.Freeze()
         self.Table.ResetView(self.VariablesGrid)
+        self.Thaw()
     
     def OnDeleteButton(self, event):
         idx = self.VariablesGrid.GetGridCursorRow()
         item = self.Table.GetItem(idx)
-        self.Controler.UnsubscribeDebugIECVariable(item.GetVariable().upper(), item)
+        self.RemoveDataConsumer(item)
         self.Table.RemoveItem(idx)
         self.RefreshGrid()
         event.Skip()
@@ -4828,7 +4833,7 @@
             if iec_path == item.GetVariable():
                 return
         item = VariableTableItem(self, iec_path, "")
-        result = self.Controler.SubscribeDebugIECVariable(iec_path.upper(), item)
+        result = self.AddDataConsumer(iec_path.upper(), item)
         if result is not None:
             self.Table.InsertItem(idx, item)
             self.RefreshGrid()