[tree model] add root section id, to start tree from a given section

This commit is contained in:
Jan Grewe 2021-01-06 23:16:28 +01:00
parent 7a1cc02d99
commit c7cf98d67e

View File

@ -97,15 +97,27 @@ class DataTreeItem(NixTreeItem):
class MetadataTreeItem(NixTreeItem):
def __init__(self, node_descriptor, file_handler, parent=None):
"""
Root item for a metadata tree.
Args:
"""
def __init__(self, node_descriptor, file_handler, parent=None, root_section_id=None):
super().__init__(node_descriptor, file_handler=file_handler, parent=parent)
self._root_section_id = root_section_id
self._is_loaded = False
def load_children(self):
self._child_items = []
sections, _ = self._file_handler.request_metadata()
for s in sections:
self._child_items.append(SectionTreeItem(s, self._file_handler, parent=self))
if self._root_section_id is not None:
item = self._file_handler.request_section_descriptor(self._root_section_id)
if item is not None:
self._child_items.append(SectionTreeItem(item, self._file_handler, parent=self))
else:
sections, _ = self._file_handler.request_metadata(root_id=self._root_section_id)
for s in sections:
self._child_items.append(SectionTreeItem(s, self._file_handler, parent=self))
self._is_loaded = True
@ -233,7 +245,7 @@ class TagTreeItem(NixTreeItem):
class TreeModel(QAbstractItemModel):
def __init__(self, file_handler, tree_type=TreeType.Full, parent=None):
def __init__(self, file_handler, tree_type=TreeType.Full, parent=None, root_section_id=None):
super(TreeModel, self).__init__(parent)
nd = ItemDescriptor(file_handler.filename, type="Root item")
self.type_icons = {NodeType.Block: QIcon("./icons/nix_block_1d.png"),
@ -247,10 +259,11 @@ class TreeModel(QAbstractItemModel):
NodeType.MultiTag: QIcon("./icons/nix_tag.png"),
NodeType.Group: QIcon("./icons/nix_group.png"),
NodeType.Feature: QIcon("./icons/nix_feature.png")}
if tree_type == TreeType.Full:
self.root_item = FileTreeItem(nd, file_handler, parent=None)
elif tree_type == TreeType.Metadata:
self.root_item = MetadataTreeItem(nd, file_handler, parent=None)
self.root_item = MetadataTreeItem(nd, file_handler, parent=None, root_section_id=root_section_id)
else:
self.root_item = DataTreeItem(nd, file_handler, parent=None)
self.root_item.load_children()