IDEFrame.py
changeset 1105 f0e5b475a074
parent 1089 5cd1f8df71aa
child 1106 843d181f73b4
--- 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