[tree] include sources and groups

This commit is contained in:
Jan Grewe 2020-12-31 17:02:05 +01:00
parent 2fb4ab96a1
commit ddb39146cd
2 changed files with 49 additions and 7 deletions

View File

@ -1,7 +1,7 @@
import os
from PyQt5.QtWidgets import QFrame, QLabel, QListWidget, QListWidgetItem, QStackedLayout, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy, QTreeView, QHeaderView
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt, QSettings
from PyQt5.QtCore import Qt, QSettings, QSize
from file_handler import FileHandler
import communicator as comm
@ -45,6 +45,7 @@ class FileView(QWidget):
self._view.setAlternatingRowColors(True)
self._view.setUniformRowHeights(True) # Allows for scrolling optimizations.
self._view.setWindowTitle("Simple Tree Model")
self._view.setIconSize(QSize(20,20))
header = self._view.header()
header.setStretchLastSection(False)
header.setSectionResizeMode(1, QHeaderView.ResizeToContents)

View File

@ -1,4 +1,5 @@
from PyQt5.QtCore import QAbstractItemModel, QFile, QModelIndex, Qt
from PyQt5.QtCore import QAbstractItemModel, QFile, QModelIndex, QSize, Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QHeaderView, QTreeWidgetItem
from file_handler import ItemDescriptor, NodeType
@ -7,10 +8,9 @@ from IPython import embed
column_names = ['Name', 'Type', 'ID', 'Value', 'Description']
class NixTreeItem():
class NixTreeItem(QTreeWidgetItem):
def __init__(self, node_descriptor, file_handler, parent=None):
super().__init__(parent)
self._node_descriptor = node_descriptor
self._file_handler = file_handler
@ -85,6 +85,48 @@ class BlockTreeItem(NixTreeItem):
for t in self._file_handler.request_tags(self._node_descriptor.id):
self._child_items.append(TagTreeItem(t, self._file_handler, parent=self))
data_frames = self._file_handler.request_data_frames(self._node_descriptor.id)
for df in data_frames:
self._child_items.append(DataFrameTreeItem(df, self._file_handler, parent=self))
sources = self._file_handler.request_sources(self._node_descriptor.id)
for s in sources:
self._child_items.append(SourceTreeItem(s, self._file_handler, parent=self))
self._is_loaded = True
class SourceTreeItem(NixTreeItem):
def __init__(self, node_descriptor, file_handler, parent):
super().__init__(node_descriptor, file_handler, parent=parent)
self._is_loaded = False
def load_children(self):
sources = self._file_handler.request_sources(self._node_descriptor.block_id, self._node_descriptor.id)
for s in sources:
self._child_items.append(SourceTreeItem(s, self._file_handler, parent=self))
self._is_loaded = True
class GroupTreeItem(NixTreeItem):
def __init__(self, node_descriptor, file_handler, parent):
super().__init__(node_descriptor, file_handler, parent=parent)
self._is_loaded = False
def load_children(self):
self._child_items = []
arrays = self._file_handler.request_data_arrays(self._node_descriptor.id)
for a in arrays:
self._child_items.append(DataArrayTreeItem(a, self._file_handler, parent=self))
for t in self._file_handler.request_tags(self._node_descriptor.id):
self._child_items.append(TagTreeItem(t, self._file_handler, parent=self))
data_frames = self._file_handler.request_data_frames(self._node_descriptor.id)
for df in data_frames:
self._child_items.append(DataFrameTreeItem(df, self._file_handler, parent=self))
sources = self._file_handler.request_sources(self._node_descriptor.id)
for s in sources:
self._child_items.append(SourceTreeItem(s, self._file_handler, parent=self))
self._is_loaded = True
class DataFrameTreeItem(NixTreeItem):
@ -177,9 +219,8 @@ class TreeModel(QAbstractItemModel):
def data(self, index, role):
if not index.isValid():
return None
item = index.internalPointer()
if role == Qt.DisplayRole:
return item.data(index.column())
elif role == Qt.DecorationRole and index.column() == 0: