Convert name check to defaultdict

This commit is contained in:
paukstelis 2018-08-29 17:43:22 -04:00
parent e36f78dd35
commit 53a0abd230

View file

@ -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)