[tree model] add root section id, to start tree from a given section
This commit is contained in:
parent
7a1cc02d99
commit
c7cf98d67e
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user