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