PLCOpenEditor.py
changeset 472 fecd4f6c01ed
parent 456 dc379f8db18d
child 473 9ee851841d28
equal deleted inserted replaced
471:ea90da16a5e2 472:fecd4f6c01ed
  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)