diff -r 017cd95bc07e -r f0e5b475a074 IDEFrame.py --- a/IDEFrame.py Thu May 09 12:50:51 2013 +0200 +++ b/IDEFrame.py Thu May 09 17:52:51 2013 +0200 @@ -1419,12 +1419,35 @@ #------------------------------------------------------------------------------- def RefreshProjectTree(self): + # Disconnect event when selection in treectrl changed + self.Unbind(wx.EVT_TREE_SEL_CHANGED, + id=ID_PLCOPENEDITORPROJECTTREE) + + # Extract current selected item tagname + selected = self.ProjectTree.GetSelection() + if selected is not None and selected.IsOk(): + item_infos = self.ProjectTree.GetPyData(selected) + tagname = item_infos.get("tagname", None) + else: + tagname = None + + # Refresh treectrl items according to project infos infos = self.Controler.GetProjectInfos() root = self.ProjectTree.GetRootItem() if not root.IsOk(): root = self.ProjectTree.AddRoot(infos["name"]) self.GenerateProjectTreeBranch(root, infos) self.ProjectTree.Expand(root) + + # Select new item corresponding to previous selected item + if tagname is not None: + wx.CallAfter(self.SelectProjectTreeItem, tagname) + + # Reconnect event when selection in treectrl changed + wx.CallAfter(self.Bind, + wx.EVT_TREE_SEL_CHANGED, + self.OnProjectTreeItemSelected, + id=ID_PLCOPENEDITORPROJECTTREE) def ResetSelectedItem(self): self.SelectedItem = None