Moved object name collision detection from new_object() to ObjectCollection.append(). Solves issue #107.
This commit is contained in:
@@ -737,17 +737,17 @@ class App(QtCore.QObject):
|
|||||||
t0 = time.time() # Debug
|
t0 = time.time() # Debug
|
||||||
|
|
||||||
### Check for existing name
|
### Check for existing name
|
||||||
while name in self.collection.get_names():
|
# while name in self.collection.get_names():
|
||||||
## Create a new name
|
# ## Create a new name
|
||||||
# Ends with number?
|
# # Ends with number?
|
||||||
App.log.debug("new_object(): Object name (%s) exists, changing." % name)
|
# App.log.debug("new_object(): Object name (%s) exists, changing." % name)
|
||||||
match = re.search(r'(.*[^\d])?(\d+)$', name)
|
# match = re.search(r'(.*[^\d])?(\d+)$', name)
|
||||||
if match: # Yes: Increment the number!
|
# if match: # Yes: Increment the number!
|
||||||
base = match.group(1) or ''
|
# base = match.group(1) or ''
|
||||||
num = int(match.group(2))
|
# num = int(match.group(2))
|
||||||
name = base + str(num + 1)
|
# name = base + str(num + 1)
|
||||||
else: # No: add a number!
|
# else: # No: add a number!
|
||||||
name += "_1"
|
# name += "_1"
|
||||||
|
|
||||||
## Create object
|
## Create object
|
||||||
classdict = {
|
classdict = {
|
||||||
@@ -1237,8 +1237,11 @@ class App(QtCore.QObject):
|
|||||||
"""
|
"""
|
||||||
t0 = time.time() # DEBUG
|
t0 = time.time() # DEBUG
|
||||||
self.log.debug("on_object_created()")
|
self.log.debug("on_object_created()")
|
||||||
self.inform.emit("Object (%s) created: %s" % (obj.kind, obj.options['name']))
|
|
||||||
|
# The Collection might change the name if there is a collision
|
||||||
self.collection.append(obj)
|
self.collection.append(obj)
|
||||||
|
|
||||||
|
self.inform.emit("Object (%s) created: %s" % (obj.kind, obj.options['name']))
|
||||||
obj.plot()
|
obj.plot()
|
||||||
self.on_zoom_fit(None)
|
self.on_zoom_fit(None)
|
||||||
t1 = time.time() # DEBUG
|
t1 = time.time() # DEBUG
|
||||||
|
|||||||
@@ -95,15 +95,30 @@ class ObjectCollection(QtCore.QAbstractListModel):
|
|||||||
def append(self, obj, active=False):
|
def append(self, obj, active=False):
|
||||||
FlatCAMApp.App.log.debug(str(inspect.stack()[1][3]) + " --> OC.append()")
|
FlatCAMApp.App.log.debug(str(inspect.stack()[1][3]) + " --> OC.append()")
|
||||||
|
|
||||||
|
# Prevent same name
|
||||||
|
name = obj.options["name"]
|
||||||
|
while name in self.get_names():
|
||||||
|
## Create a new name
|
||||||
|
# Ends with number?
|
||||||
|
FlatCAMApp.App.log.debug("new_object(): Object name (%s) exists, changing." % name)
|
||||||
|
match = re.search(r'(.*[^\d])?(\d+)$', name)
|
||||||
|
if match: # Yes: Increment the number!
|
||||||
|
base = match.group(1) or ''
|
||||||
|
num = int(match.group(2))
|
||||||
|
name = base + str(num + 1)
|
||||||
|
else: # No: add a number!
|
||||||
|
name += "_1"
|
||||||
|
obj.options["name"] = name
|
||||||
|
|
||||||
obj.set_ui(obj.ui_type())
|
obj.set_ui(obj.ui_type())
|
||||||
|
|
||||||
# Required before appending
|
# Required before appending (Qt MVC)
|
||||||
self.beginInsertRows(QtCore.QModelIndex(), len(self.object_list), len(self.object_list))
|
self.beginInsertRows(QtCore.QModelIndex(), len(self.object_list), len(self.object_list))
|
||||||
|
|
||||||
# Simply append to the python list
|
# Simply append to the python list
|
||||||
self.object_list.append(obj)
|
self.object_list.append(obj)
|
||||||
|
|
||||||
# Required after appending
|
# Required after appending (Qt MVC)
|
||||||
self.endInsertRows()
|
self.endInsertRows()
|
||||||
|
|
||||||
def get_names(self):
|
def get_names(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user