1353 selected = self.TabsOpened.GetSelection() |
1353 selected = self.TabsOpened.GetSelection() |
1354 if selected >= 0: |
1354 if selected >= 0: |
1355 window = self.TabsOpened.GetPage(selected) |
1355 window = self.TabsOpened.GetPage(selected) |
1356 tagname = window.GetTagName() |
1356 tagname = window.GetTagName() |
1357 if not window.IsDebugging(): |
1357 if not window.IsDebugging(): |
1358 wx.CallAfter(self.SelectProjectTreeItem, tagname) |
1358 self.SelectProjectTreeItem(tagname) |
1359 wx.CallAfter(self.PouInstanceVariablesPanel.SetPouType, tagname) |
1359 self.PouInstanceVariablesPanel.SetPouType(tagname) |
1360 window.RefreshView() |
1360 window.RefreshView() |
1361 self.EnsureTabVisible(self.LibraryPanel) |
1361 self.EnsureTabVisible(self.LibraryPanel) |
1362 else: |
1362 else: |
1363 instance_path = window.GetInstancePath() |
1363 instance_path = window.GetInstancePath() |
1364 if tagname == "": |
1364 if tagname == "": |
1427 #------------------------------------------------------------------------------- |
1427 #------------------------------------------------------------------------------- |
1428 # Types Tree Management Functions |
1428 # Types Tree Management Functions |
1429 #------------------------------------------------------------------------------- |
1429 #------------------------------------------------------------------------------- |
1430 |
1430 |
1431 def RefreshProjectTree(self): |
1431 def RefreshProjectTree(self): |
1432 if wx.Platform == '__WXMSW__': |
1432 self.ProjectTree.SetEvtHandlerEnabled(False) |
1433 # Disconnect event when selection in treectrl changed |
|
1434 self.Unbind(wx.EVT_TREE_SEL_CHANGED, |
|
1435 id=ID_PLCOPENEDITORPROJECTTREE) |
|
1436 |
1433 |
1437 # Extract current selected item tagname |
1434 # Extract current selected item tagname |
1438 selected = self.ProjectTree.GetSelection() |
1435 selected = self.ProjectTree.GetSelection() |
1439 if selected is not None and selected.IsOk(): |
1436 if selected is not None and selected.IsOk(): |
1440 item_infos = self.ProjectTree.GetPyData(selected) |
1437 item_infos = self.ProjectTree.GetPyData(selected) |
1450 self.GenerateProjectTreeBranch(root, infos) |
1447 self.GenerateProjectTreeBranch(root, infos) |
1451 self.ProjectTree.Expand(root) |
1448 self.ProjectTree.Expand(root) |
1452 |
1449 |
1453 # Select new item corresponding to previous selected item |
1450 # Select new item corresponding to previous selected item |
1454 if tagname is not None: |
1451 if tagname is not None: |
1455 wx.CallAfter(self.SelectProjectTreeItem, tagname) |
1452 self.SelectProjectTreeItem(tagname) |
1456 |
1453 else: |
1457 if wx.Platform == '__WXMSW__': |
1454 self.ProjectTree.SetEvtHandlerEnabled(True) |
1458 # Reconnect event when selection in treectrl changed |
|
1459 wx.CallAfter(self.Bind, |
|
1460 wx.EVT_TREE_SEL_CHANGED, |
|
1461 self.OnProjectTreeItemSelected, |
|
1462 id=ID_PLCOPENEDITORPROJECTTREE) |
|
1463 |
1455 |
1464 def ResetSelectedItem(self): |
1456 def ResetSelectedItem(self): |
1465 self.SelectedItem = None |
1457 self.SelectedItem = None |
1466 |
1458 |
1467 def GenerateProjectTreeBranch(self, root, infos): |
1459 def GenerateProjectTreeBranch(self, root, infos): |
1503 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1495 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1504 for item in to_delete: |
1496 for item in to_delete: |
1505 self.ProjectTree.Delete(item) |
1497 self.ProjectTree.Delete(item) |
1506 |
1498 |
1507 def SelectProjectTreeItem(self, tagname): |
1499 def SelectProjectTreeItem(self, tagname): |
|
1500 self.ProjectTree.SetEvtHandlerEnabled(False) |
|
1501 result = False |
1508 if self.ProjectTree is not None: |
1502 if self.ProjectTree is not None: |
1509 root = self.ProjectTree.GetRootItem() |
1503 root = self.ProjectTree.GetRootItem() |
1510 if root.IsOk(): |
1504 if root.IsOk(): |
1511 words = tagname.split("::") |
1505 words = tagname.split("::") |
1512 if words[0] == "D": |
1506 if words[0] == "D": |
1513 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_DATATYPE)]) |
1507 result = self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_DATATYPE)]) |
1514 elif words[0] == "P": |
1508 elif words[0] == "P": |
1515 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_POU)]) |
1509 result = self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_POU)]) |
1516 elif words[0] == "T": |
1510 elif words[0] == "T": |
1517 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_TRANSITION)]) |
1511 result = self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_TRANSITION)]) |
1518 elif words[0] == "A": |
1512 elif words[0] == "A": |
1519 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_ACTION)]) |
1513 result = self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_ACTION)]) |
1520 elif words[0] == "C": |
1514 elif words[0] == "C": |
1521 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION)]) |
1515 result = self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION)]) |
1522 elif words[0] == "R": |
1516 elif words[0] == "R": |
1523 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION), (words[2], ITEM_RESOURCE)]) |
1517 result = self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION), (words[2], ITEM_RESOURCE)]) |
1524 return False |
1518 self.ProjectTree.SetEvtHandlerEnabled(True) |
|
1519 return result |
1525 |
1520 |
1526 def RecursiveProjectTreeItemSelection(self, root, items): |
1521 def RecursiveProjectTreeItemSelection(self, root, items): |
1527 found = False |
1522 found = False |
1528 if wx.VERSION >= (2, 6, 0): |
1523 if wx.VERSION >= (2, 6, 0): |
1529 item, root_cookie = self.ProjectTree.GetFirstChild(root) |
1524 item, root_cookie = self.ProjectTree.GetFirstChild(root) |
1532 while item.IsOk() and not found: |
1527 while item.IsOk() and not found: |
1533 item_infos = self.ProjectTree.GetPyData(item) |
1528 item_infos = self.ProjectTree.GetPyData(item) |
1534 if (item_infos["name"].split(":")[-1].strip(), item_infos["type"]) == items[0]: |
1529 if (item_infos["name"].split(":")[-1].strip(), item_infos["type"]) == items[0]: |
1535 if len(items) == 1: |
1530 if len(items) == 1: |
1536 self.SelectedItem = item |
1531 self.SelectedItem = item |
1537 wx.CallAfter(self.ProjectTree.SelectItem, item) |
1532 self.ProjectTree.SelectItem(item) |
1538 wx.CallAfter(self.ResetSelectedItem) |
1533 self.ResetSelectedItem() |
1539 return True |
1534 return True |
1540 else: |
1535 else: |
1541 found = self.RecursiveProjectTreeItemSelection(item, items[1:]) |
1536 found = self.RecursiveProjectTreeItemSelection(item, items[1:]) |
1542 else: |
1537 else: |
1543 found = self.RecursiveProjectTreeItemSelection(item, items) |
1538 found = self.RecursiveProjectTreeItemSelection(item, items) |