1727 while item.IsOk(): |
1727 while item.IsOk(): |
1728 to_delete.append(item) |
1728 to_delete.append(item) |
1729 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie) |
1729 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie) |
1730 for item in to_delete: |
1730 for item in to_delete: |
1731 self.InstancesTree.Delete(item) |
1731 self.InstancesTree.Delete(item) |
|
1732 if infos["type"] in [ITEM_CONFIGURATION, ITEM_RESOURCE]: |
|
1733 self.InstancesTree.Expand(root) |
1732 |
1734 |
1733 def OnInstancesTreeBeginDrag(self, event): |
1735 def OnInstancesTreeBeginDrag(self, event): |
1734 if self.Controler.DebugAvailable(): |
1736 if self.Controler.DebugAvailable(): |
1735 selected_item = event.GetItem() |
1737 selected_item = event.GetItem() |
1736 selected_infos = self.InstancesTree.GetPyData(selected_item) |
1738 selected_infos = self.InstancesTree.GetPyData(selected_item) |
3917 if colname == "Variable": |
3919 if colname == "Variable": |
3918 self.data[row].SetVariable(value) |
3920 self.data[row].SetVariable(value) |
3919 elif colname == "Value": |
3921 elif colname == "Value": |
3920 self.data[row].SetValue(value) |
3922 self.data[row].SetValue(value) |
3921 |
3923 |
|
3924 def IsForced(self, row): |
|
3925 if row < self.GetNumberRows(): |
|
3926 return self.data[row].IsForced() |
|
3927 return False |
|
3928 |
3922 def ResetView(self, grid): |
3929 def ResetView(self, grid): |
3923 """ |
3930 """ |
3924 (wx.grid.Grid) -> Reset the grid view. Call this to |
3931 (wx.grid.Grid) -> Reset the grid view. Call this to |
3925 update the grid if rows and columns have been added or deleted |
3932 update the grid if rows and columns have been added or deleted |
3926 """ |
3933 """ |
4069 self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL, |
4076 self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL, |
4070 False, 'Sans')) |
4077 False, 'Sans')) |
4071 self.VariablesGrid.SetSelectionBackground(wx.WHITE) |
4078 self.VariablesGrid.SetSelectionBackground(wx.WHITE) |
4072 self.VariablesGrid.SetSelectionForeground(wx.BLACK) |
4079 self.VariablesGrid.SetSelectionForeground(wx.BLACK) |
4073 self.VariablesGrid.SetDropTarget(DebugVariableDropTarget(self)) |
4080 self.VariablesGrid.SetDropTarget(DebugVariableDropTarget(self)) |
|
4081 self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnVariablesGridRightClick) |
4074 |
4082 |
4075 self.UpButton = wx.Button(id=ID_DEBUGVARIABLEPANELUPBUTTON, label='^', |
4083 self.UpButton = wx.Button(id=ID_DEBUGVARIABLEPANELUPBUTTON, label='^', |
4076 name='UpButton', parent=self, pos=wx.Point(0, 0), |
4084 name='UpButton', parent=self, pos=wx.Point(0, 0), |
4077 size=wx.Size(32, 32), style=0) |
4085 size=wx.Size(32, 32), style=0) |
4078 self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_DEBUGVARIABLEPANELUPBUTTON) |
4086 self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_DEBUGVARIABLEPANELUPBUTTON) |
4121 self.DeleteDataConsumers() |
4129 self.DeleteDataConsumers() |
4122 self.Table.Empty() |
4130 self.Table.Empty() |
4123 self.Freeze() |
4131 self.Freeze() |
4124 self.Table.ResetView(self.VariablesGrid) |
4132 self.Table.ResetView(self.VariablesGrid) |
4125 self.Thaw() |
4133 self.Thaw() |
|
4134 |
|
4135 def GetForceVariableMenuFunction(self, iec_path): |
|
4136 iec_type = self.GetDataType(iec_path) |
|
4137 def ForceVariableFunction(event): |
|
4138 if iec_type is not None: |
|
4139 dialog = ForceVariableDialog(self, iec_type) |
|
4140 if dialog.ShowModal() == wx.ID_OK: |
|
4141 self.ForceDataValue(iec_path, dialog.GetValue()) |
|
4142 return ForceVariableFunction |
|
4143 |
|
4144 def GetReleaseVariableMenuFunction(self, iec_path): |
|
4145 def ReleaseVariableFunction(event): |
|
4146 self.ReleaseDataValue(iec_path) |
|
4147 return ReleaseVariableFunction |
|
4148 |
|
4149 def OnVariablesGridRightClick(self, event): |
|
4150 row, col = event.GetRow(), event.GetCol() |
|
4151 if self.Table.GetColLabelValue(col, False) == "Value": |
|
4152 iec_path = self.Table.GetValueByName(row, "Variable").upper() |
|
4153 |
|
4154 menu = wx.Menu(title='') |
|
4155 new_id = wx.NewId() |
|
4156 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Force value")) |
|
4157 self.Bind(wx.EVT_MENU, self.GetForceVariableMenuFunction(iec_path.upper()), id=new_id) |
|
4158 new_id = wx.NewId() |
|
4159 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Release value")) |
|
4160 self.Bind(wx.EVT_MENU, self.GetReleaseVariableMenuFunction(iec_path.upper()), id=new_id) |
|
4161 if self.Table.IsForced(row): |
|
4162 menu.Enable(new_id, True) |
|
4163 else: |
|
4164 menu.Enable(new_id, False) |
|
4165 self.PopupMenu(menu) |
|
4166 event.Skip() |
4126 |
4167 |
4127 def OnDeleteButton(self, event): |
4168 def OnDeleteButton(self, event): |
4128 idx = self.VariablesGrid.GetGridCursorRow() |
4169 idx = self.VariablesGrid.GetGridCursorRow() |
4129 item = self.Table.GetItem(idx) |
4170 item = self.Table.GetItem(idx) |
4130 self.RemoveDataConsumer(item) |
4171 self.RemoveDataConsumer(item) |