Browse Source

Convert name check to defaultdict

paukstelis 6 years ago
parent
commit
53a0abd230
1 changed files with 10 additions and 14 deletions
  1. 10 14
      cura/ObjectsModel.py

+ 10 - 14
cura/ObjectsModel.py

@@ -9,6 +9,7 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
 from UM.Scene.SceneNode import SceneNode
 from UM.Scene.Selection import Selection
 from UM.i18n import i18nCatalog
+from collections import defaultdict
 
 catalog = i18nCatalog("cura")
 
@@ -40,9 +41,8 @@ class ObjectsModel(ListModel):
         filter_current_build_plate = Application.getInstance().getPreferences().getValue("view/filter_current_build_plate")
         active_build_plate_number = self._build_plate_number
         group_nr = 1
-        instance = 1
-        namecount = []
-       
+        name_count_dict = defaultdict(int)
+
         for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()):
             if not isinstance(node, SceneNode):
                 continue
@@ -69,16 +69,12 @@ class ObjectsModel(ListModel):
                 is_outside_build_area = False
                 
             #check if we already have an instance of the object based on name
-            duplicate = False
-            for n in namecount:
-                if name == n["name"]:
-                    name = "{0}({1})".format(name, n["count"])
-                    node.setName(name)
-                    n["count"] = n["count"]+1
-                    duplicate = True
-                    
-            if not duplicate:
-                namecount.append({"name" : name, "count" : 1})
+            name_count_dict[name] += 1
+            name_count = name_count_dict[name]
+
+            if name_count > 1:
+                name = "{0}({1})".format(name, name_count-1)
+                node.setName(name)
 
             nodes.append({
                 "name": name,
@@ -87,7 +83,7 @@ class ObjectsModel(ListModel):
                 "buildPlateNumber": node_build_plate_number,
                 "node": node
             })
-        
+       
         nodes = sorted(nodes, key=lambda n: n["name"])
         self.setItems(nodes)