[ui] support for appending multiple elements to a ListAttribute at once

This commit is contained in:
Yann Lanthony 2017-11-07 20:34:33 +01:00
parent 9bc8eaeb1b
commit f6ae3ae057
2 changed files with 14 additions and 5 deletions

View file

@ -168,18 +168,23 @@ class ListAttributeAppendCommand(GraphCommand):
assert isinstance(listAttribute, ListAttribute)
self.attrName = listAttribute.fullName()
self.index = None
self.value = value
self.count = 1
self.value = value if len(value) else None
self.setText("Append to {}".format(self.attrName))
def redoImpl(self):
listAttribute = self.graph.attribute(self.attrName)
self.index = len(listAttribute)
if isinstance(self.value, list):
listAttribute.extend(self.value)
self.count = len(self.value)
else:
listAttribute.append(self.value)
self.index = len(listAttribute) - 1
return True
def undoImpl(self):
listAttribute = self.graph.attribute(self.attrName)
listAttribute.remove(self.index)
listAttribute.remove(self.index, self.count)
class ListAttributeRemoveCommand(GraphCommand):

View file

@ -63,7 +63,11 @@ class Reconstruction(QObject):
@Slot(graph.Attribute, QJsonValue)
def appendAttribute(self, attribute, value):
self._undoStack.tryAndPush(commands.ListAttributeAppendCommand(self._graph, attribute, value.toObject()))
if value.isArray():
pyValue = value.toArray().toVariantList()
else:
pyValue = None if value.isNull() else value.toObject()
self._undoStack.tryAndPush(commands.ListAttributeAppendCommand(self._graph, attribute, pyValue))
@Slot(graph.Attribute)
def removeAttribute(self, attribute):