PLCOpenEditor.py
changeset 635 dbcb8e2d2730
parent 631 e4dd5bf1f1db
child 638 2b9ed21d965c
equal deleted inserted replaced
634:cc3335911c01 635:dbcb8e2d2730
  1220         if selected >= 0:
  1220         if selected >= 0:
  1221             window = self.TabsOpened.GetPage(selected)
  1221             window = self.TabsOpened.GetPage(selected)
  1222             if not window.IsDebugging():
  1222             if not window.IsDebugging():
  1223                 wx.CallAfter(self.SelectTypesTreeItem, window.GetTagName())
  1223                 wx.CallAfter(self.SelectTypesTreeItem, window.GetTagName())
  1224             else:
  1224             else:
  1225                 wx.CallAfter(self.SelectInstancesTreeItem, self.InstancesTree.GetRootItem(), window.GetInstancePath())
  1225                 wx.CallAfter(self.SelectInstancesTreeItem, window.GetInstancePath())
  1226             window.RefreshView()
  1226             window.RefreshView()
  1227         wx.CallAfter(self._Refresh, FILEMENU, EDITMENU, DISPLAYMENU, TOOLBAR)
  1227         wx.CallAfter(self._Refresh, FILEMENU, EDITMENU, DISPLAYMENU, TOOLBAR)
  1228         event.Skip()
  1228         event.Skip()
  1229 
  1229 
  1230     def RefreshEditor(self):
  1230     def RefreshEditor(self):
  1321             self.TypesTree.Delete(item)
  1321             self.TypesTree.Delete(item)
  1322 
  1322 
  1323     def SelectTypesTreeItem(self, tagname):
  1323     def SelectTypesTreeItem(self, tagname):
  1324         if self.TypesTree is not None:
  1324         if self.TypesTree is not None:
  1325             root = self.TypesTree.GetRootItem()
  1325             root = self.TypesTree.GetRootItem()
  1326             words = tagname.split("::")
  1326             if root.IsOk():
  1327             if words[0] == "D":
  1327                 words = tagname.split("::")
  1328                 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_DATATYPE)])
  1328                 if words[0] == "D":
  1329             elif words[0] == "P":
  1329                     return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_DATATYPE)])
  1330                 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU)])
  1330                 elif words[0] == "P":
  1331             elif words[0] == "T":
  1331                     return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU)])
  1332                 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_TRANSITION)])
  1332                 elif words[0] == "T":
  1333             elif words[0] == "A":
  1333                     return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_TRANSITION)])
  1334                 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_ACTION)])
  1334                 elif words[0] == "A":
  1335             elif words[0] == "C":
  1335                     return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_ACTION)])
  1336                 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION)])
  1336                 elif words[0] == "C":
  1337             elif words[0] == "R":
  1337                     return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION)])
  1338                 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION), (words[2], ITEM_RESOURCE)])
  1338                 elif words[0] == "R":
       
  1339                     return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION), (words[2], ITEM_RESOURCE)])
  1339         return False
  1340         return False
  1340 
  1341 
  1341     def RecursiveTypesTreeItemSelection(self, root, items):
  1342     def RecursiveTypesTreeItemSelection(self, root, items):
  1342         found = False
  1343         found = False
  1343         if self.TypesTree is not None:
  1344         if wx.VERSION >= (2, 6, 0):
  1344             if wx.VERSION >= (2, 6, 0):
  1345             item, root_cookie = self.TypesTree.GetFirstChild(root)
  1345                 item, root_cookie = self.TypesTree.GetFirstChild(root)
  1346         else:
       
  1347             item, root_cookie = self.TypesTree.GetFirstChild(root, 0)
       
  1348         while item.IsOk() and not found:
       
  1349             if (self.TypesTree.GetItemText(item), self.TypesTree.GetPyData(item)) == items[0]:
       
  1350                 if len(items) == 1:
       
  1351                     self.SelectedItem = item
       
  1352                     self.TypesTree.SelectItem(item)
       
  1353                     wx.CallAfter(self.ResetSelectedItem)
       
  1354                     return True
       
  1355                 else:
       
  1356                     found = self.RecursiveTypesTreeItemSelection(item, items[1:])
  1346             else:
  1357             else:
  1347                 item, root_cookie = self.TypesTree.GetFirstChild(root, 0)
  1358                 found = self.RecursiveTypesTreeItemSelection(item, items)
  1348             while item.IsOk() and not found:
  1359             item, root_cookie = self.TypesTree.GetNextChild(root, root_cookie)
  1349                 if (self.TypesTree.GetItemText(item), self.TypesTree.GetPyData(item)) == items[0]:
       
  1350                     if len(items) == 1:
       
  1351                         self.SelectedItem = item
       
  1352                         self.TypesTree.SelectItem(item)
       
  1353                         wx.CallAfter(self.ResetSelectedItem)
       
  1354                         return True
       
  1355                     else:
       
  1356                         found = self.RecursiveTypesTreeItemSelection(item, items[1:])
       
  1357                 else:
       
  1358                     found = self.RecursiveTypesTreeItemSelection(item, items)
       
  1359                 item, root_cookie = self.TypesTree.GetNextChild(root, root_cookie)
       
  1360         return found
  1360         return found
  1361 
  1361 
  1362     def OnTypesTreeBeginDrag(self, event):
  1362     def OnTypesTreeBeginDrag(self, event):
  1363         if wx.Platform == '__WXMSW__':
  1363         if wx.Platform == '__WXMSW__':
  1364             self.SelectedItem = event.GetItem()
  1364             self.SelectedItem = event.GetItem()
  1900         def AddVariableGraphic(event):
  1900         def AddVariableGraphic(event):
  1901             self.OpenGraphicViewer(iec_path)
  1901             self.OpenGraphicViewer(iec_path)
  1902             event.Skip()
  1902             event.Skip()
  1903         return AddVariableGraphic
  1903         return AddVariableGraphic
  1904 
  1904 
  1905     def SelectInstancesTreeItem(self, root, instancepath):
  1905     def RecursiveInstancesTreeItemSelection(self, root, instancepath):
  1906         found = False
  1906         found = False
       
  1907         paths = instancepath.split(".", 1)
       
  1908         if wx.VERSION >= (2, 6, 0):
       
  1909             item, root_cookie = self.InstancesTree.GetFirstChild(root)
       
  1910         else:
       
  1911             item, root_cookie = self.InstancesTree.GetFirstChild(root, 0)
       
  1912         while item.IsOk() and not found:
       
  1913             name = self.InstancesTree.GetItemText(item).split(" (")[0]
       
  1914             if name == paths[0]:
       
  1915                 if len(paths) == 1:
       
  1916                     self.InstancesTree.SelectItem(item)
       
  1917                     return True
       
  1918                 else:
       
  1919                     found = self.SelectInstancesTreeItem(item, paths[1])
       
  1920             item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie)
       
  1921         return found
       
  1922     
       
  1923     def SelectInstancesTreeItem(self, instancepath):
  1907         if self.InstancesTree is not None:
  1924         if self.InstancesTree is not None:
  1908             paths = instancepath.split(".", 1)
  1925             root = self.InstancesTree.GetRootItem()
  1909             if wx.VERSION >= (2, 6, 0):
  1926             if root.IsOk():
  1910                 item, root_cookie = self.InstancesTree.GetFirstChild(root)
  1927                 return self.RecursiveInstancesTreeItemSelection(root, instancepath)
  1911             else:
  1928         return False
  1912                 item, root_cookie = self.InstancesTree.GetFirstChild(root, 0)
  1929     
  1913             while item.IsOk() and not found:
       
  1914                 name = self.InstancesTree.GetItemText(item).split(" (")[0]
       
  1915                 if name == paths[0]:
       
  1916                     if len(paths) == 1:
       
  1917                         self.InstancesTree.SelectItem(item)
       
  1918                         return True
       
  1919                     else:
       
  1920                         found = self.SelectInstancesTreeItem(item, paths[1])
       
  1921                 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie)
       
  1922         return found
       
  1923 
       
  1924     def ResetGraphicViewers(self):
  1930     def ResetGraphicViewers(self):
  1925         for i in xrange(self.TabsOpened.GetPageCount()):
  1931         for i in xrange(self.TabsOpened.GetPageCount()):
  1926             editor = self.TabsOpened.GetPage(i)
  1932             editor = self.TabsOpened.GetPage(i)
  1927             if isinstance(editor, GraphicViewer):
  1933             if isinstance(editor, GraphicViewer):
  1928                 editor.ResetView()
  1934                 editor.ResetView()