From c7cf98d67e5020068a16221fd859974bb5b7b202 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Wed, 6 Jan 2021 23:16:28 +0100 Subject: [PATCH] [tree model] add root section id, to start tree from a given section --- tree_model.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/tree_model.py b/tree_model.py index 0f198cd..54fbb71 100644 --- a/tree_model.py +++ b/tree_model.py @@ -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()