1293 def ZoomFunction(event): |
1293 def ZoomFunction(event): |
1294 selected = self.TabsOpened.GetSelection() |
1294 selected = self.TabsOpened.GetSelection() |
1295 if selected != -1: |
1295 if selected != -1: |
1296 window = self.TabsOpened.GetPage(selected) |
1296 window = self.TabsOpened.GetPage(selected) |
1297 window.SetScale(idx) |
1297 window.SetScale(idx) |
|
1298 window.RefreshVisibleElements() |
|
1299 window.RefreshScrollBars() |
1298 event.Skip() |
1300 event.Skip() |
1299 return ZoomFunction |
1301 return ZoomFunction |
1300 |
1302 |
1301 |
1303 |
1302 #------------------------------------------------------------------------------- |
1304 #------------------------------------------------------------------------------- |
4532 |
4534 |
4533 #------------------------------------------------------------------------------- |
4535 #------------------------------------------------------------------------------- |
4534 # Variables Editor Panel |
4536 # Variables Editor Panel |
4535 #------------------------------------------------------------------------------- |
4537 #------------------------------------------------------------------------------- |
4536 |
4538 |
4537 class VariableTableItem: |
4539 class VariableTableItem(DebugDataConsumer): |
4538 |
4540 |
4539 def __init__(self, parent, variable, value): |
4541 def __init__(self, parent, variable, value): |
|
4542 DebugDataConsumer.__init__(self) |
4540 self.Parent = parent |
4543 self.Parent = parent |
4541 self.Variable = variable |
4544 self.Variable = variable |
4542 self.Value = value |
4545 self.Value = value |
4543 |
4546 |
4544 def __del__(self): |
4547 def __del__(self): |
4551 |
4554 |
4552 def GetVariable(self): |
4555 def GetVariable(self): |
4553 return self.Variable |
4556 return self.Variable |
4554 |
4557 |
4555 def SetValue(self, value): |
4558 def SetValue(self, value): |
4556 if self.Parent and self.Value != value: |
4559 if self.Value != value: |
4557 self.Value = value |
4560 self.Value = value |
4558 self.Parent.RefreshGrid() |
4561 self.Parent.NewDataAvailable() |
4559 |
4562 |
4560 def GetValue(self): |
4563 def GetValue(self): |
4561 return self.Value |
4564 return self.Value |
4562 |
4565 |
4563 class DebugVariableTable(wx.grid.PyGridTableBase): |
4566 class DebugVariableTable(wx.grid.PyGridTableBase): |
4564 |
4567 |
4565 """ |
4568 """ |
4566 A custom wx.grid.Grid Table using user supplied data |
4569 A custom wx.grid.Grid Table using user supplied data |
4714 message.ShowModal() |
4717 message.ShowModal() |
4715 message.Destroy() |
4718 message.Destroy() |
4716 |
4719 |
4717 [ID_DEBUGVARIABLEPANEL, ID_DEBUGVARIABLEPANELVARIABLESGRID, |
4720 [ID_DEBUGVARIABLEPANEL, ID_DEBUGVARIABLEPANELVARIABLESGRID, |
4718 ID_DEBUGVARIABLEPANELUPBUTTON, ID_DEBUGVARIABLEPANELDOWNBUTTON, |
4721 ID_DEBUGVARIABLEPANELUPBUTTON, ID_DEBUGVARIABLEPANELDOWNBUTTON, |
4719 ID_DEBUGVARIABLEPANELDELETEBUTTON, |
4722 ID_DEBUGVARIABLEPANELDELETEBUTTON, |
4720 ] = [wx.NewId() for _init_ctrls in range(5)] |
4723 ] = [wx.NewId() for _init_ctrls in range(5)] |
4721 |
4724 |
4722 class DebugVariablePanel(wx.Panel): |
4725 class DebugVariablePanel(wx.Panel, DebugViewer): |
4723 |
4726 |
4724 if wx.VERSION < (2, 6, 0): |
4727 if wx.VERSION < (2, 6, 0): |
4725 def Bind(self, event, function, id = None): |
4728 def Bind(self, event, function, id = None): |
4726 if id is not None: |
4729 if id is not None: |
4727 event(self, id, function) |
4730 event(self, id, function) |
4784 |
4787 |
4785 self._init_sizers() |
4788 self._init_sizers() |
4786 |
4789 |
4787 def __init__(self, parent, controler): |
4790 def __init__(self, parent, controler): |
4788 self._init_ctrls(parent) |
4791 self._init_ctrls(parent) |
|
4792 DebugViewer.__init__(self, controler, True) |
4789 self.Controler = controler |
4793 self.Controler = controler |
4790 |
4794 |
4791 self.Table = DebugVariableTable(self, [], ["Variable", "Value"]) |
4795 self.Table = DebugVariableTable(self, [], ["Variable", "Value"]) |
4792 self.VariablesGrid.SetTable(self.Table) |
4796 self.VariablesGrid.SetTable(self.Table) |
4793 self.VariablesGrid.SetRowLabelSize(0) |
4797 self.VariablesGrid.SetRowLabelSize(0) |
4794 |
4798 |
4795 for col in range(self.Table.GetNumberCols()): |
4799 for col in range(self.Table.GetNumberCols()): |
4796 attr = wx.grid.GridCellAttr() |
4800 attr = wx.grid.GridCellAttr() |
4797 attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER) |
4801 attr.SetAlignment(wx.ALIGN_RIGHT, wx.ALIGN_CENTER) |
4798 self.VariablesGrid.SetColAttr(col, attr) |
4802 self.VariablesGrid.SetColAttr(col, attr) |
4799 self.VariablesGrid.SetColSize(col, 100) |
4803 self.VariablesGrid.SetColSize(col, 100) |
4800 |
4804 |
4801 self.Table.ResetView(self.VariablesGrid) |
4805 self.Table.ResetView(self.VariablesGrid) |
4802 |
4806 |
4803 def __del__(self): |
4807 def RefreshNewData(self): |
4804 for item in self.Table.GetData(): |
4808 self.RefreshGrid() |
4805 self.Controler.UnsubscribeDebugIECVariable(item.GetVariable().upper(), item) |
|
4806 |
4809 |
4807 def RefreshGrid(self): |
4810 def RefreshGrid(self): |
|
4811 self.Freeze() |
4808 self.Table.ResetView(self.VariablesGrid) |
4812 self.Table.ResetView(self.VariablesGrid) |
|
4813 self.Thaw() |
4809 |
4814 |
4810 def OnDeleteButton(self, event): |
4815 def OnDeleteButton(self, event): |
4811 idx = self.VariablesGrid.GetGridCursorRow() |
4816 idx = self.VariablesGrid.GetGridCursorRow() |
4812 item = self.Table.GetItem(idx) |
4817 item = self.Table.GetItem(idx) |
4813 self.Controler.UnsubscribeDebugIECVariable(item.GetVariable().upper(), item) |
4818 self.RemoveDataConsumer(item) |
4814 self.Table.RemoveItem(idx) |
4819 self.Table.RemoveItem(idx) |
4815 self.RefreshGrid() |
4820 self.RefreshGrid() |
4816 event.Skip() |
4821 event.Skip() |
4817 |
4822 |
4818 def OnUpButton(self, event): |
4823 def OnUpButton(self, event): |
4826 def InsertValue(self, idx, iec_path): |
4831 def InsertValue(self, idx, iec_path): |
4827 for item in self.Table.GetData(): |
4832 for item in self.Table.GetData(): |
4828 if iec_path == item.GetVariable(): |
4833 if iec_path == item.GetVariable(): |
4829 return |
4834 return |
4830 item = VariableTableItem(self, iec_path, "") |
4835 item = VariableTableItem(self, iec_path, "") |
4831 result = self.Controler.SubscribeDebugIECVariable(iec_path.upper(), item) |
4836 result = self.AddDataConsumer(iec_path.upper(), item) |
4832 if result is not None: |
4837 if result is not None: |
4833 self.Table.InsertItem(idx, item) |
4838 self.Table.InsertItem(idx, item) |
4834 self.RefreshGrid() |
4839 self.RefreshGrid() |
4835 |
4840 |
4836 def MoveValue(self, idx, move): |
4841 def MoveValue(self, idx, move): |