PLCOpenEditor.py
changeset 53 4988262d03e3
parent 52 35b54852c533
child 54 6688829ce624
equal deleted inserted replaced
52:35b54852c533 53:4988262d03e3
   788     def OnProjectTreeBeginDrag(self, event):
   788     def OnProjectTreeBeginDrag(self, event):
   789         item = event.GetItem()
   789         item = event.GetItem()
   790         if self.ProjectTree.GetPyData(item) == ITEM_POU:
   790         if self.ProjectTree.GetPyData(item) == ITEM_POU:
   791             block_name = self.ProjectTree.GetItemText(item)
   791             block_name = self.ProjectTree.GetItemText(item)
   792             block_type = self.Controler.GetPouType(block_name)
   792             block_type = self.Controler.GetPouType(block_name)
   793             data = wxTextDataObject(str((block_name, block_type)))
   793             if block_type != "program":
   794             dragSource = wxDropSource(self.ProjectTree)
   794                 data = wxTextDataObject(str((block_name, block_type)))
   795             dragSource.SetData(data)
   795                 dragSource = wxDropSource(self.ProjectTree)
   796             dragSource.DoDragDrop()
   796                 dragSource.SetData(data)
       
   797                 dragSource.DoDragDrop()
   797 
   798 
   798     def OnProjectTreeItemEndEdit(self, event):
   799     def OnProjectTreeItemEndEdit(self, event):
   799         message = None
   800         message = None
   800         abort = False
   801         abort = False
   801         new_name = event.GetLabel()
   802         new_name = event.GetLabel()
  2034 
  2035 
  2035     def Empty(self):
  2036     def Empty(self):
  2036         self.data = []
  2037         self.data = []
  2037         self.editors = []
  2038         self.editors = []
  2038 
  2039 
       
  2040 class VariableDropTarget(wx.TextDropTarget):
       
  2041     
       
  2042     def __init__(self, parent):
       
  2043         wx.TextDropTarget.__init__(self)
       
  2044         self.Parent = parent
       
  2045     
       
  2046     def OnDropText(self, x, y, data):
       
  2047         col = self.Parent.VariablesGrid.XToCol(x)
       
  2048         row = self.Parent.VariablesGrid.YToRow(y)
       
  2049         if col != wxNOT_FOUND and row != wxNOT_FOUND:
       
  2050             if self.Parent.Table.GetColLabelValue(col) != "Location":
       
  2051                 return
       
  2052             try:
       
  2053                 values = eval(data)    
       
  2054             except:
       
  2055                 values = None
       
  2056             if values and values[1] == "location":
       
  2057                 dialog = wxSingleChoiceDialog(self.Parent, "Select a variable class:", "Variable class", ["Input", "Output", "Memory"], wxOK|wxCANCEL)
       
  2058                 if dialog.ShowModal() == wxID_OK:
       
  2059                     selected = dialog.GetSelection()
       
  2060                     if selected == 0:
       
  2061                         location = "%I" + values[0]
       
  2062                     elif selected == 1:
       
  2063                         location = "%Q" + values[0]
       
  2064                     else:
       
  2065                         location = "%M" + values[0]
       
  2066                     self.Parent.Table.SetValue(row - 1, col, location)
       
  2067                     self.Parent.Table.ResetView(self.Parent.VariablesGrid)
       
  2068                     self.Parent.SaveValues()
       
  2069                 dialog.Destroy()    
       
  2070 
  2039 [wxID_POUEDITORPANEL, wxID_POUEDITORPANELVIEWER, 
  2071 [wxID_POUEDITORPANEL, wxID_POUEDITORPANELVIEWER, 
  2040  wxID_POUEDITORPANELVARIABLESGRID, wxID_POUEDITORPANELRETURNTYPE, 
  2072  wxID_POUEDITORPANELVARIABLESGRID, wxID_POUEDITORPANELRETURNTYPE, 
  2041  wxID_POUEDITORPANELCLASSFILTER, wxID_POUEDITORPANELADDBUTTON,
  2073  wxID_POUEDITORPANELCLASSFILTER, wxID_POUEDITORPANELADDBUTTON,
  2042  wxID_POUEDITORPANELDELETEBUTTON, wxID_POUEDITORPANELUPBUTTON, 
  2074  wxID_POUEDITORPANELDELETEBUTTON, wxID_POUEDITORPANELUPBUTTON, 
  2043  wxID_POUEDITORPANELDOWNBUTTON, wxID_POUEDITORPANELSTATICTEXT1, 
  2075  wxID_POUEDITORPANELDOWNBUTTON, wxID_POUEDITORPANELSTATICTEXT1, 
  2182         self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
  2214         self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
  2183               False, 'Sans'))
  2215               False, 'Sans'))
  2184         self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnVariablesGridCellChange)
  2216         self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnVariablesGridCellChange)
  2185         self.VariablesGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnVariablesGridSelectCell)
  2217         self.VariablesGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnVariablesGridSelectCell)
  2186         self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnVariablesGridCellLeftClick)
  2218         self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnVariablesGridCellLeftClick)
       
  2219         
       
  2220         self.VariablesGrid.SetDropTarget(VariableDropTarget(self))
  2187         
  2221         
  2188         self.AddButton = wx.Button(id=wxID_POUEDITORPANELADDBUTTON, label='Add',
  2222         self.AddButton = wx.Button(id=wxID_POUEDITORPANELADDBUTTON, label='Add',
  2189               name='AddButton', parent=self, pos=wx.Point(345, 340),
  2223               name='AddButton', parent=self, pos=wx.Point(345, 340),
  2190               size=wx.Size(72, 32), style=0)
  2224               size=wx.Size(72, 32), style=0)
  2191         EVT_BUTTON(self, wxID_POUEDITORPANELADDBUTTON, self.OnAddButton)
  2225         EVT_BUTTON(self, wxID_POUEDITORPANELADDBUTTON, self.OnAddButton)