IDEFrame.py
changeset 1164 8fd44bc05aae
parent 1159 950787298c96
child 1165 99972084890d
equal deleted inserted replaced
1163:32599dcf311f 1164:8fd44bc05aae
  1441             tagname = None
  1441             tagname = None
  1442         
  1442         
  1443         # Refresh treectrl items according to project infos
  1443         # Refresh treectrl items according to project infos
  1444         infos = self.Controler.GetProjectInfos()
  1444         infos = self.Controler.GetProjectInfos()
  1445         root = self.ProjectTree.GetRootItem()
  1445         root = self.ProjectTree.GetRootItem()
  1446         if not root.IsOk():
  1446         if root is None or not root.IsOk():
  1447             root = self.ProjectTree.AddRoot(infos["name"])
  1447             root = self.ProjectTree.AddRoot(infos["name"])
  1448         self.GenerateProjectTreeBranch(root, infos)
  1448         self.GenerateProjectTreeBranch(root, infos)
  1449         self.ProjectTree.Expand(root)
  1449         self.ProjectTree.Expand(root)
  1450         
  1450         
  1451         # Select new item corresponding to previous selected item
  1451         # Select new item corresponding to previous selected item
  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