[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 import os
from PyQt5.QtWidgets import QFrame, QLabel, QListWidget, QListWidgetItem, QStackedLayout, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy, QTreeView, QHeaderView from PyQt5.QtWidgets import QFrame, QLabel, QListWidget, QListWidgetItem, QStackedLayout, QVBoxLayout, QWidget, QGridLayout, QSpacerItem, QSizePolicy, QTreeView, QHeaderView
from PyQt5.QtGui import QPixmap from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt, QSettings from PyQt5.QtCore import Qt, QSettings, QSize
from file_handler import FileHandler from file_handler import FileHandler
import communicator as comm import communicator as comm
@ -45,6 +45,7 @@ class FileView(QWidget):
self._view.setAlternatingRowColors(True) self._view.setAlternatingRowColors(True)
self._view.setUniformRowHeights(True) # Allows for scrolling optimizations. self._view.setUniformRowHeights(True) # Allows for scrolling optimizations.
self._view.setWindowTitle("Simple Tree Model") self._view.setWindowTitle("Simple Tree Model")
self._view.setIconSize(QSize(20,20))
header = self._view.header() header = self._view.header()
header.setStretchLastSection(False) header.setStretchLastSection(False)
header.setSectionResizeMode(1, QHeaderView.ResizeToContents) 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 PyQt5.QtWidgets import QHeaderView, QTreeWidgetItem
from file_handler import ItemDescriptor, NodeType from file_handler import ItemDescriptor, NodeType
@ -7,10 +8,9 @@ from IPython import embed
column_names = ['Name', 'Type', 'ID', 'Value', 'Description'] column_names = ['Name', 'Type', 'ID', 'Value', 'Description']
class NixTreeItem(QTreeWidgetItem):
class NixTreeItem():
def __init__(self, node_descriptor, file_handler, parent=None): def __init__(self, node_descriptor, file_handler, parent=None):
super().__init__(parent)
self._node_descriptor = node_descriptor self._node_descriptor = node_descriptor
self._file_handler = file_handler self._file_handler = file_handler
@ -85,6 +85,48 @@ class BlockTreeItem(NixTreeItem):
for t in self._file_handler.request_tags(self._node_descriptor.id): for t in self._file_handler.request_tags(self._node_descriptor.id):
self._child_items.append(TagTreeItem(t, self._file_handler, parent=self)) 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 self._is_loaded = True
class DataFrameTreeItem(NixTreeItem): class DataFrameTreeItem(NixTreeItem):
@ -177,9 +219,8 @@ class TreeModel(QAbstractItemModel):
def data(self, index, role): def data(self, index, role):
if not index.isValid(): if not index.isValid():
return None return None
item = index.internalPointer() item = index.internalPointer()
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
return item.data(index.column()) return item.data(index.column())
elif role == Qt.DecorationRole and index.column() == 0: elif role == Qt.DecorationRole and index.column() == 0: