PLCOpenEditor.py
changeset 131 bc534997aecc
parent 129 ae2421aa0aa4
child 132 3aaf349203bc
equal deleted inserted replaced
130:38421cd7c8ff 131:bc534997aecc
   359             self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE,
   359             self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE,
   360                   name='treeCtrl1', parent=self, pos=wx.Point(0, 0),
   360                   name='treeCtrl1', parent=self, pos=wx.Point(0, 0),
   361                   size=wx.Size(200, -1),
   361                   size=wx.Size(200, -1),
   362                   style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
   362                   style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
   363             self.AUIManager.AddPane(self.ProjectTree, wx.aui.AuiPaneInfo().Caption("Project Tree").Left().Layer(1).BestSize(wx.Size(200, 500)).CloseButton(False))
   363             self.AUIManager.AddPane(self.ProjectTree, wx.aui.AuiPaneInfo().Caption("Project Tree").Left().Layer(1).BestSize(wx.Size(200, 500)).CloseButton(False))
   364         if wx.VERSION >= (2, 6, 0):
   364         if wx.Platform == '__WXMSW__':
   365             self.ProjectTree.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp)
   365             self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnProjectTreeRightUp,
   366             self.ProjectTree.Bind(wx.EVT_LEFT_UP, self.OnProjectTreeLeftUp)
   366                   id=ID_PLCOPENEDITORPROJECTTREE)
   367         else:
   367             self.Bind(wx.EVT_TREE_ITEM_CHANGED, self.OnProjectTreeItemSelected,
   368             wx.EVT_RIGHT_UP(self.ProjectTree, self.OnProjectTreeRightUp)
   368                   id=ID_PLCOPENEDITORPROJECTTREE)
   369             wx.EVT_LEFT_UP(self.ProjectTree, self.OnProjectTreeLeftUp)
   369         else:
       
   370             if wx.VERSION >= (2, 6, 0):
       
   371                 self.ProjectTree.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp)
       
   372                 self.ProjectTree.Bind(wx.EVT_LEFT_UP, self.OnProjectTreeLeftUp)
       
   373             else:
       
   374                 wx.EVT_RIGHT_UP(self.ProjectTree, self.OnProjectTreeRightUp)
       
   375                 wx.EVT_LEFT_UP(self.ProjectTree, self.OnProjectTreeLeftUp)
       
   376             self.Bind(wx.EVT_TREE_SEL_CHANGING, self.OnProjectTreeItemChanging,
       
   377                   id=ID_PLCOPENEDITORPROJECTTREE)
   370         self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnProjectTreeBeginDrag,
   378         self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnProjectTreeBeginDrag,
   371               id=ID_PLCOPENEDITORPROJECTTREE)
   379               id=ID_PLCOPENEDITORPROJECTTREE)
   372         self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnProjectTreeItemBeginEdit,
   380         self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnProjectTreeItemBeginEdit,
   373               id=ID_PLCOPENEDITORPROJECTTREE)
   381               id=ID_PLCOPENEDITORPROJECTTREE)
   374         self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnProjectTreeItemEndEdit,
   382         self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnProjectTreeItemEndEdit,
   375               id=ID_PLCOPENEDITORPROJECTTREE)
   383               id=ID_PLCOPENEDITORPROJECTTREE)
   376         self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated,
   384         self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated,
   377               id=ID_PLCOPENEDITORPROJECTTREE)
       
   378         self.Bind(wx.EVT_TREE_SEL_CHANGING, self.OnProjectTreeItemChanging,
       
   379               id=ID_PLCOPENEDITORPROJECTTREE)
   385               id=ID_PLCOPENEDITORPROJECTTREE)
   380         
   386         
   381         if wx.VERSION < (2, 8, 0):
   387         if wx.VERSION < (2, 8, 0):
   382             self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, 
   388             self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, 
   383                   ID_PLCOPENEDITORTOOLBAR, 'ToolBar')
   389                   ID_PLCOPENEDITORTOOLBAR, 'ToolBar')
  1006                     found = self.SelectProjectTreeItem(item, items)
  1012                     found = self.SelectProjectTreeItem(item, items)
  1007                 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
  1013                 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
  1008         return found
  1014         return found
  1009 
  1015 
  1010     def OnProjectTreeBeginDrag(self, event):
  1016     def OnProjectTreeBeginDrag(self, event):
       
  1017         if wx.Platform == '__WXMSW__':
       
  1018             self.SelectItem = event.Skip()
  1011         if self.SelectedItem is not None and self.ProjectTree.GetPyData(self.SelectedItem) == ITEM_POU:
  1019         if self.SelectedItem is not None and self.ProjectTree.GetPyData(self.SelectedItem) == ITEM_POU:
  1012             block_name = self.ProjectTree.GetItemText(self.SelectedItem)
  1020             block_name = self.ProjectTree.GetItemText(self.SelectedItem)
  1013             block_type = self.Controler.GetPouType(block_name)
  1021             block_type = self.Controler.GetPouType(block_name)
  1014             if block_type != "program":
  1022             if block_type != "program":
  1015                 data = wx.TextDataObject(str((block_name, block_type, "")))
  1023                 data = wx.TextDataObject(str((block_name, block_type, "")))
  1189             elif data == ITEM_ACTION:
  1197             elif data == ITEM_ACTION:
  1190                 tagname = self.Controler.ComputePouActionName(pou_name, name)
  1198                 tagname = self.Controler.ComputePouActionName(pou_name, name)
  1191             self.EditProjectElement(data, tagname)
  1199             self.EditProjectElement(data, tagname)
  1192         event.Skip()
  1200         event.Skip()
  1193     
  1201     
       
  1202     def ProjectTreeItemSelect(self, select_item):
       
  1203         name = self.ProjectTree.GetItemText(select_item)
       
  1204         data = self.ProjectTree.GetPyData(select_item)
       
  1205         if data == ITEM_DATATYPE:
       
  1206             self.EditProjectElement(data, self.Controler.ComputeDataTypeName(name), True)
       
  1207         elif data == ITEM_POU:
       
  1208             self.EditProjectElement(data, self.Controler.ComputePouName(name), True)
       
  1209         elif data == ITEM_CONFIGURATION:
       
  1210             self.EditProjectElement(data, self.Controler.ComputeConfigurationName(name), True)
       
  1211         elif data == ITEM_RESOURCE:
       
  1212             item = self.ProjectTree.GetItemParent(select_item)
       
  1213             item_type = self.ProjectTree.GetPyData(item)
       
  1214             while item_type != ITEM_CONFIGURATION:
       
  1215                 item = self.ProjectTree.GetItemParent(item)
       
  1216                 item_type = self.ProjectTree.GetPyData(item)
       
  1217             config_name = self.ProjectTree.GetItemText(item)
       
  1218             self.EditProjectElement(data, self.Controler.ComputeConfigurationResourceName(config_name, name), True)
       
  1219         elif data in [ITEM_TRANSITION, ITEM_ACTION]:
       
  1220             item = self.ProjectTree.GetItemParent(select_Item)
       
  1221             item_type = self.ProjectTree.GetPyData(item)
       
  1222             while item_type != ITEM_POU:
       
  1223                 item = self.ProjectTree.GetItemParent(item)
       
  1224                 item_type = self.ProjectTree.GetPyData(item)
       
  1225             pou_name = self.ProjectTree.GetItemText(item)
       
  1226             if data == ITEM_TRANSITION:
       
  1227                 tagname = self.Controler.ComputePouTransitionName(pou_name, name)
       
  1228             elif data == ITEM_ACTION:
       
  1229                 tagname = self.Controler.ComputePouActionName(pou_name, name)
       
  1230             self.EditProjectElement(data, tagname, True)
       
  1231     
  1194     def OnProjectTreeLeftUp(self, event):
  1232     def OnProjectTreeLeftUp(self, event):
  1195         if self.SelectedItem is not None:
  1233         if self.SelectedItem is not None:
  1196             self.ProjectTree.SelectItem(self.SelectedItem)
  1234             self.ProjectTree.SelectItem(self.SelectedItem)
  1197             name = self.ProjectTree.GetItemText(self.SelectedItem)
  1235             self.ProjectTreeItemSelect(self.SelectedItem)
  1198             data = self.ProjectTree.GetPyData(self.SelectedItem)
       
  1199             if data == ITEM_DATATYPE:
       
  1200                 self.EditProjectElement(data, self.Controler.ComputeDataTypeName(name), True)
       
  1201             elif data == ITEM_POU:
       
  1202                 self.EditProjectElement(data, self.Controler.ComputePouName(name), True)
       
  1203             elif data == ITEM_CONFIGURATION:
       
  1204                 self.EditProjectElement(data, self.Controler.ComputeConfigurationName(name), True)
       
  1205             elif data == ITEM_RESOURCE:
       
  1206                 item = self.ProjectTree.GetItemParent(self.SelectedItem)
       
  1207                 item_type = self.ProjectTree.GetPyData(item)
       
  1208                 while item_type != ITEM_CONFIGURATION:
       
  1209                     item = self.ProjectTree.GetItemParent(item)
       
  1210                     item_type = self.ProjectTree.GetPyData(item)
       
  1211                 config_name = self.ProjectTree.GetItemText(item)
       
  1212                 self.EditProjectElement(data, self.Controler.ComputeConfigurationResourceName(config_name, name), True)
       
  1213             elif data in [ITEM_TRANSITION, ITEM_ACTION]:
       
  1214                 item = self.ProjectTree.GetItemParent(self.SelectedItem)
       
  1215                 item_type = self.ProjectTree.GetPyData(item)
       
  1216                 while item_type != ITEM_POU:
       
  1217                     item = self.ProjectTree.GetItemParent(item)
       
  1218                     item_type = self.ProjectTree.GetPyData(item)
       
  1219                 pou_name = self.ProjectTree.GetItemText(item)
       
  1220                 if data == ITEM_TRANSITION:
       
  1221                     tagname = self.Controler.ComputePouTransitionName(pou_name, name)
       
  1222                 elif data == ITEM_ACTION:
       
  1223                     tagname = self.Controler.ComputePouActionName(pou_name, name)
       
  1224                 self.EditProjectElement(data, tagname, True)
       
  1225             wx.CallAfter(self.ResetSelectedItem)
  1236             wx.CallAfter(self.ResetSelectedItem)
       
  1237         event.Skip()
       
  1238     
       
  1239     def OnProjectTreeItemSelected(self, event):
       
  1240         self.ProjectTreeItemSelect(event.GetItem())
  1226         event.Skip()
  1241         event.Skip()
  1227     
  1242     
  1228     def OnProjectTreeItemChanging(self, event):
  1243     def OnProjectTreeItemChanging(self, event):
  1229         if self.ProjectTree.GetPyData(event.GetItem()) != ITEM_UNEDITABLE and self.SelectedItem is None:
  1244         if self.ProjectTree.GetPyData(event.GetItem()) != ITEM_UNEDITABLE and self.SelectedItem is None:
  1230             self.SelectedItem = event.GetItem()
  1245             self.SelectedItem = event.GetItem()
  3194             var_class = self.Table.GetValueByName(row, "Class")
  3209             var_class = self.Table.GetValueByName(row, "Class")
  3195             var_type = self.Table.GetValueByName(row, "Type")
  3210             var_type = self.Table.GetValueByName(row, "Type")
  3196             data = wx.TextDataObject(str((var_name, var_class, var_type, self.TagName)))
  3211             data = wx.TextDataObject(str((var_name, var_class, var_type, self.TagName)))
  3197             dragSource = wx.DropSource(self.VariablesGrid)
  3212             dragSource = wx.DropSource(self.VariablesGrid)
  3198             dragSource.SetData(data)
  3213             dragSource.SetData(data)
  3199             print dragSource.DoDragDrop()
       
  3200         event.Skip()
  3214         event.Skip()
  3201     
  3215     
  3202     def OnVariablesGridSelectCell(self, event):
  3216     def OnVariablesGridSelectCell(self, event):
  3203         wx.CallAfter(self.RefreshButtons)
  3217         wx.CallAfter(self.RefreshButtons)
  3204         event.Skip()
  3218         event.Skip()