[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):
|
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)
|
super().__init__(node_descriptor, file_handler=file_handler, parent=parent)
|
||||||
|
self._root_section_id = root_section_id
|
||||||
self._is_loaded = False
|
self._is_loaded = False
|
||||||
|
|
||||||
def load_children(self):
|
def load_children(self):
|
||||||
self._child_items = []
|
self._child_items = []
|
||||||
sections, _ = self._file_handler.request_metadata()
|
if self._root_section_id is not None:
|
||||||
for s in sections:
|
item = self._file_handler.request_section_descriptor(self._root_section_id)
|
||||||
self._child_items.append(SectionTreeItem(s, self._file_handler, parent=self))
|
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
|
self._is_loaded = True
|
||||||
|
|
||||||
|
|
||||||
@ -233,7 +245,7 @@ class TagTreeItem(NixTreeItem):
|
|||||||
|
|
||||||
class TreeModel(QAbstractItemModel):
|
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)
|
super(TreeModel, self).__init__(parent)
|
||||||
nd = ItemDescriptor(file_handler.filename, type="Root item")
|
nd = ItemDescriptor(file_handler.filename, type="Root item")
|
||||||
self.type_icons = {NodeType.Block: QIcon("./icons/nix_block_1d.png"),
|
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.MultiTag: QIcon("./icons/nix_tag.png"),
|
||||||
NodeType.Group: QIcon("./icons/nix_group.png"),
|
NodeType.Group: QIcon("./icons/nix_group.png"),
|
||||||
NodeType.Feature: QIcon("./icons/nix_feature.png")}
|
NodeType.Feature: QIcon("./icons/nix_feature.png")}
|
||||||
|
|
||||||
if tree_type == TreeType.Full:
|
if tree_type == TreeType.Full:
|
||||||
self.root_item = FileTreeItem(nd, file_handler, parent=None)
|
self.root_item = FileTreeItem(nd, file_handler, parent=None)
|
||||||
elif tree_type == TreeType.Metadata:
|
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:
|
else:
|
||||||
self.root_item = DataTreeItem(nd, file_handler, parent=None)
|
self.root_item = DataTreeItem(nd, file_handler, parent=None)
|
||||||
self.root_item.load_children()
|
self.root_item.load_children()
|
||||||
|
Loading…
Reference in New Issue
Block a user