1455 self.ProjectTree.SetEvtHandlerEnabled(True) |
1455 self.ProjectTree.SetEvtHandlerEnabled(True) |
1456 |
1456 |
1457 def ResetSelectedItem(self): |
1457 def ResetSelectedItem(self): |
1458 self.SelectedItem = None |
1458 self.SelectedItem = None |
1459 |
1459 |
1460 def GenerateProjectTreeBranch(self, root, infos): |
1460 def GenerateProjectTreeBranch(self, root, infos, item_alone=False): |
1461 to_delete = [] |
1461 to_delete = [] |
1462 item_name = infos["name"] |
1462 item_name = infos["name"] |
1463 if infos["type"] in ITEMS_UNEDITABLE: |
1463 if infos["type"] in ITEMS_UNEDITABLE: |
1464 if len(infos["values"]) == 1: |
1464 if len(infos["values"]) == 1: |
1465 return self.GenerateProjectTreeBranch(root, infos["values"][0]) |
1465 return self.GenerateProjectTreeBranch(root, infos["values"][0], True) |
1466 item_name = _(item_name) |
1466 item_name = _(item_name) |
1467 self.ProjectTree.SetItemText(root, item_name) |
1467 self.ProjectTree.SetItemText(root, item_name) |
1468 self.ProjectTree.SetPyData(root, infos) |
1468 self.ProjectTree.SetPyData(root, infos) |
1469 highlight_colours = self.Highlights.get(infos.get("tagname", None), (wx.WHITE, wx.BLACK)) |
1469 highlight_colours = self.Highlights.get(infos.get("tagname", None), (wx.WHITE, wx.BLACK)) |
1470 self.ProjectTree.SetItemBackgroundColour(root, highlight_colours[0]) |
1470 self.ProjectTree.SetItemBackgroundColour(root, highlight_colours[0]) |
1471 self.ProjectTree.SetItemTextColour(root, highlight_colours[1]) |
1471 self.ProjectTree.SetItemTextColour(root, highlight_colours[1]) |
1472 if infos["type"] == ITEM_POU: |
1472 if infos["type"] == ITEM_POU: |
1473 self.ProjectTree.SetItemImage(root, self.TreeImageDict[self.Controler.GetPouBodyType(infos["name"])]) |
1473 self.ProjectTree.SetItemImage(root, |
|
1474 self.TreeImageDict[self.Controler.GetPouBodyType(infos["name"])]) |
|
1475 if item_alone: |
|
1476 self.ProjectTree.SetItemExtraImage(root, self.Controler.GetPouType(infos["name"])) |
1474 elif infos.has_key("icon") and infos["icon"] is not None: |
1477 elif infos.has_key("icon") and infos["icon"] is not None: |
1475 icon_name = infos["icon"] |
1478 icon_name = infos["icon"] |
1476 if not self.TreeImageDict.has_key(icon_name): |
1479 if not self.TreeImageDict.has_key(icon_name): |
1477 self.TreeImageDict[icon_name] = self.TreeImageList.Add(GetBitmap(icon_name)) |
1480 self.TreeImageDict[icon_name] = self.TreeImageList.Add(GetBitmap(icon_name)) |
1478 self.ProjectTree.SetItemImage(root, self.TreeImageDict[icon_name]) |
1481 self.ProjectTree.SetItemImage(root, self.TreeImageDict[icon_name]) |
1479 elif self.TreeImageDict.has_key(infos["type"]): |
1482 elif self.TreeImageDict.has_key(infos["type"]): |
1480 self.ProjectTree.SetItemImage(root, self.TreeImageDict[infos["type"]]) |
1483 self.ProjectTree.SetItemImage(root, self.TreeImageDict[infos["type"]]) |
1481 |
1484 |
1482 if wx.VERSION >= (2, 6, 0): |
1485 item, root_cookie = self.ProjectTree.GetFirstChild(root) |
1483 item, root_cookie = self.ProjectTree.GetFirstChild(root) |
|
1484 else: |
|
1485 item, root_cookie = self.ProjectTree.GetFirstChild(root, 0) |
|
1486 for values in infos["values"]: |
1486 for values in infos["values"]: |
1487 if values["type"] not in ITEMS_UNEDITABLE or len(values["values"]) > 0: |
1487 if values["type"] not in ITEMS_UNEDITABLE or len(values["values"]) > 0: |
1488 if not item.IsOk(): |
1488 if item is None or not item.IsOk(): |
1489 item = self.ProjectTree.AppendItem(root, "") |
1489 item = self.ProjectTree.AppendItem(root, "") |
1490 if wx.Platform != '__WXMSW__': |
1490 if wx.Platform != '__WXMSW__': |
1491 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1491 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1492 self.GenerateProjectTreeBranch(item, values) |
1492 self.GenerateProjectTreeBranch(item, values) |
1493 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1493 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1494 while item.IsOk(): |
1494 while item is not None and item.IsOk(): |
1495 to_delete.append(item) |
1495 to_delete.append(item) |
1496 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1496 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1497 for item in to_delete: |
1497 for item in to_delete: |
1498 self.ProjectTree.Delete(item) |
1498 self.ProjectTree.Delete(item) |
1499 |
1499 |
1519 self.ProjectTree.SetEvtHandlerEnabled(True) |
1519 self.ProjectTree.SetEvtHandlerEnabled(True) |
1520 return result |
1520 return result |
1521 |
1521 |
1522 def RecursiveProjectTreeItemSelection(self, root, items): |
1522 def RecursiveProjectTreeItemSelection(self, root, items): |
1523 found = False |
1523 found = False |
1524 if wx.VERSION >= (2, 6, 0): |
1524 item, root_cookie = self.ProjectTree.GetFirstChild(root) |
1525 item, root_cookie = self.ProjectTree.GetFirstChild(root) |
1525 while item is not None and item.IsOk() and not found: |
1526 else: |
|
1527 item, root_cookie = self.ProjectTree.GetFirstChild(root, 0) |
|
1528 while item.IsOk() and not found: |
|
1529 item_infos = self.ProjectTree.GetPyData(item) |
1526 item_infos = self.ProjectTree.GetPyData(item) |
1530 if (item_infos["name"].split(":")[-1].strip(), item_infos["type"]) == items[0]: |
1527 if (item_infos["name"].split(":")[-1].strip(), item_infos["type"]) == items[0]: |
1531 if len(items) == 1: |
1528 if len(items) == 1: |
1532 self.SelectedItem = item |
1529 self.SelectedItem = item |
1533 self.ProjectTree.SelectItem(item) |
1530 self.ProjectTree.SelectItem(item) |
1684 ITEM_TRANSITION, ITEM_ACTION]: |
1681 ITEM_TRANSITION, ITEM_ACTION]: |
1685 self.EditProjectElement(item_infos["type"], item_infos["tagname"]) |
1682 self.EditProjectElement(item_infos["type"], item_infos["tagname"]) |
1686 event.Skip() |
1683 event.Skip() |
1687 |
1684 |
1688 def ProjectTreeItemSelect(self, select_item): |
1685 def ProjectTreeItemSelect(self, select_item): |
1689 if select_item.IsOk(): |
1686 if select_item is not None and select_item.IsOk(): |
1690 name = self.ProjectTree.GetItemText(select_item) |
1687 name = self.ProjectTree.GetItemText(select_item) |
1691 item_infos = self.ProjectTree.GetPyData(select_item) |
1688 item_infos = self.ProjectTree.GetPyData(select_item) |
1692 if item_infos["type"] in [ITEM_DATATYPE, ITEM_POU, |
1689 if item_infos["type"] in [ITEM_DATATYPE, ITEM_POU, |
1693 ITEM_CONFIGURATION, ITEM_RESOURCE, |
1690 ITEM_CONFIGURATION, ITEM_RESOURCE, |
1694 ITEM_TRANSITION, ITEM_ACTION]: |
1691 ITEM_TRANSITION, ITEM_ACTION]: |
1704 |
1701 |
1705 def OnProjectTreeMotion(self, event): |
1702 def OnProjectTreeMotion(self, event): |
1706 if not event.Dragging(): |
1703 if not event.Dragging(): |
1707 pt = wx.Point(event.GetX(), event.GetY()) |
1704 pt = wx.Point(event.GetX(), event.GetY()) |
1708 item, flags = self.ProjectTree.HitTest(pt) |
1705 item, flags = self.ProjectTree.HitTest(pt) |
1709 if item.IsOk() and flags & wx.TREE_HITTEST_ONITEMLABEL: |
1706 if item is not None and item.IsOk() and flags & wx.TREE_HITTEST_ONITEMLABEL: |
1710 item_infos = self.ProjectTree.GetPyData(item) |
1707 item_infos = self.ProjectTree.GetPyData(item) |
1711 if item != self.LastToolTipItem and self.LastToolTipItem is not None: |
1708 if item != self.LastToolTipItem and self.LastToolTipItem is not None: |
1712 self.ProjectTree.SetToolTip(None) |
1709 self.ProjectTree.SetToolTip(None) |
1713 self.LastToolTipItem = None |
1710 self.LastToolTipItem = None |
1714 if (self.LastToolTipItem != item and |
1711 if (self.LastToolTipItem != item and |