editors/Viewer.py
changeset 1331 38c5de794e62
parent 1293 40117d02601b
child 1335 1b9610fc1e6b
--- a/editors/Viewer.py	Fri Sep 27 16:22:40 2013 +0200
+++ b/editors/Viewer.py	Fri Sep 27 16:27:54 2013 +0200
@@ -1089,10 +1089,11 @@
         self.ResetBuffer()
         instance = {}
         # List of ids of already loaded blocks
-        ids = []
+        ids = self.Controler.GetEditedElementInstancesIds(self.TagName, debug = self.Debug)
         # Load Blocks until they are all loaded
-        while instance is not None:
-            instance = self.Controler.GetEditedElementInstanceInfos(self.TagName, exclude = ids, debug = self.Debug)
+        while len(ids) > 0:
+            instance = self.Controler.GetEditedElementInstanceInfos(
+                self.TagName, ids.popitem(0)[0], debug = self.Debug)
             if instance is not None:
                 self.loadInstance(instance, ids, selection)
         
@@ -1221,7 +1222,6 @@
         
     # Load instance from given informations
     def loadInstance(self, instance, ids, selection):
-        ids.append(instance["id"])
         self.current_id = max(self.current_id, instance["id"])
         creation_function = ElementCreationFunctions.get(instance["type"], None)
         connectors = {"inputs" : [], "outputs" : []}
@@ -1319,7 +1319,7 @@
                 links_connected = False
                 continue
             
-            if refLocalId not in ids:
+            if ids.pop(refLocalId, False):
                 new_instance = self.Controler.GetEditedElementInstanceInfos(self.TagName, refLocalId, debug = self.Debug)
                 if new_instance is not None:
                     self.loadInstance(new_instance, ids, selection)