From c1b8ee7568f6891c9e1019d00a8db2fadd13693f Mon Sep 17 00:00:00 2001 From: Mika Fischer Date: Tue, 14 Jun 2011 16:44:26 +0200 Subject: [PATCH] Add multiple children at once in RootModelItem --- sloth/annotations/model.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/sloth/annotations/model.py b/sloth/annotations/model.py index de126b9..d3b85ef 100644 --- a/sloth/annotations/model.py +++ b/sloth/annotations/model.py @@ -101,6 +101,26 @@ class ModelItem: item._attachToModel(self.model()) self.model().endInsertRows() + def appendChildren(self, items): + for item in items: + assert isinstance(item, ModelItem) + assert item.model() is None + assert item.parent() is None + + if self.model() is not None: + next_row = len(self._children) + self.model().beginInsertRows(self.index(), next_row, next_row + len(items) - 1) + + for item in items: + item._parent = self + self.children().append(item) + + if self.model() is not None: + for item in items: + item._attachToModel(self.model()) + + self.model().endInsertRows() + def deleteAllChildren(self): for child in self._children: child.deleteAllChildren() @@ -143,8 +163,8 @@ class RootModelItem(ModelItem): self.appendChild(item) def appendFileItems(self, fileinfos): - for fileinfo in fileinfos: - self.appendFileItem(fileinfo) + items = [FileModelItem.create(fi) for fi in fileinfos] + self.appendChildren(items) class FileModelItem(ModelItem): def __init__(self, fileinfo):