From 2fb4ab96a1939e28387e2596a3dc4edb080ffe19 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Thu, 31 Dec 2020 17:01:41 +0100 Subject: [PATCH] [tree model] add icons for tree item decoration --- tree_model.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/tree_model.py b/tree_model.py index 3162a8a..9e70eb1 100644 --- a/tree_model.py +++ b/tree_model.py @@ -17,7 +17,11 @@ class NixTreeItem(): self._parent_item = parent self._child_items = [] self._is_loaded = False - + + @property + def entity_type(self): + return self._node_descriptor.entity_type + def child(self, row): if row < len(self._child_items): return self._child_items[row] @@ -52,7 +56,7 @@ class NixTreeItem(): return self._parent_item._child_items.index(self) return 0 - + class FileTreeItem(NixTreeItem): def __init__(self, node_descriptor, file_handler, parent=None): super().__init__(node_descriptor, file_handler=file_handler, parent=parent) @@ -68,7 +72,6 @@ class FileTreeItem(NixTreeItem): self._child_items.append(BlockTreeItem(b, self._file_handler, parent=self)) self._is_loaded = True - class BlockTreeItem(NixTreeItem): def __init__(self, node_descriptor, file_handler, parent=None): super().__init__(node_descriptor, file_handler, parent=parent) @@ -150,10 +153,22 @@ class TagTreeItem(NixTreeItem): self._is_loaded = True class TreeModel(QAbstractItemModel): + def __init__(self, file_handler, parent=None): super(TreeModel, self).__init__(parent) nd = ItemDescriptor(file_handler.filename, type="Root item") self.root_item = FileTreeItem(nd, file_handler, parent=None) + self.type_icons = {NodeType.Block: QIcon("./icons/nix_block_1d.png"), + NodeType.Source: QIcon("./icons/nix_source.png"), + NodeType.DataArray: QIcon("./icons/nix_data_array.png"), + NodeType.Dimension: QIcon("./icons/nix_dimension.png"), + NodeType.DataFrame: QIcon("./icons/nix_data_frame.png"), + NodeType.Section: QIcon("./icons/nix_section.png"), + NodeType.Property: QIcon("./icons/nix_property.png"), + NodeType.Tag: QIcon("./icons/nix_tag.png"), + NodeType.MultiTag: QIcon("./icons/nix_tag.png"), + NodeType.Group: QIcon("./icons/nix_group.png"), + NodeType.Feature: QIcon("./icons/nix_feature.png")} self.root_item.load_children() def columnCount(self, parent): @@ -167,6 +182,11 @@ class TreeModel(QAbstractItemModel): if role == Qt.DisplayRole: return item.data(index.column()) + elif role == Qt.DecorationRole and index.column() == 0: + if item.entity_type in self.type_icons.keys(): + return self.type_icons[item.entity_type] + else: + return None else: return None