[central view] add comboBox for tree type selection, remove metadata tree

This commit is contained in:
Jan Grewe 2021-01-06 15:50:31 +01:00
parent 8147a43753
commit ab94435a82

View File

@ -1,13 +1,13 @@
import os
from PyQt5.QtWidgets import QFrame, QGroupBox, QLabel, QLayout, QListWidget, QListWidgetItem, QSplitter, QStackedLayout, QAbstractItemView, QVBoxLayout, QWidget, QGridLayout, QTreeView, QHeaderView
from PyQt5.QtWidgets import QComboBox, QFrame, QGroupBox, QHBoxLayout, QLabel, QListWidget, QListWidgetItem, QSpacerItem, QSplitter, QStackedLayout, QAbstractItemView, QTextEdit, QVBoxLayout, QWidget, QGridLayout, QTreeView, QHeaderView
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QItemSelectionModel, Qt, QSettings, QSize, pyqtSignal
from file_handler import FileHandler
from file_handler import FileHandler, ItemDescriptor
from plot_screen import PlotScreen
import communicator as comm
import constants as cnst
from tree_model import TreeModel, TreeType
from tree_model import NixTreeItem, TagTreeItem, TreeModel, TreeType
class CentralWidget(QWidget):
@ -49,25 +49,12 @@ class FileView(QWidget):
vbox = QVBoxLayout()
self.setLayout(vbox)
splitter = QSplitter(Qt.Horizontal)
self._mdata_tree = QTreeView(self)
self._mdata_tree.expanded.connect(self.metadataTreeResize)
self._mdata_tree.collapsed.connect(self.metadataTreeResize)
self._mdata_tree.setAlternatingRowColors(True)
self._mdata_tree.setUniformRowHeights(True) # Allows for scrolling optimizations.
self._mdata_tree.setWindowTitle("Metadata Tree")
self._mdata_tree.setIconSize(self.icon_size)
mheader = self._mdata_tree.header()
mheader.setStretchLastSection(False)
mheader.setSectionResizeMode(1, QHeaderView.ResizeToContents)
mheader.setSectionResizeMode(2, QHeaderView.ResizeToContents)
mheader.setSectionResizeMode(0, QHeaderView.Stretch)
main_splitter = QSplitter(Qt.Vertical)
self.layout().addWidget(main_splitter)
mdata_group = QGroupBox("Metadata")
mdata_group.setLayout(QVBoxLayout())
mdata_group.layout().setContentsMargins(2, 10, 2, 2)
mdata_group.layout().addWidget(self._mdata_tree)
self._info = EntityInfo(self)
main_splitter.addWidget(self._info)
self._data_tree = QTreeView(self)
self._data_tree.expanded.connect(self.dataTreeResize)
@ -84,15 +71,26 @@ class FileView(QWidget):
header.setSectionResizeMode(2, QHeaderView.ResizeToContents)
header.setSectionResizeMode(0, QHeaderView.Stretch)
self._tree_type_combo = QComboBox()
self._tree_type_combo.adjustSize()
self._tree_type_combo.addItems([TreeType.Data.value, TreeType.Full.value, TreeType.Metadata.value])
self._tree_type_combo.currentTextChanged.connect(self.update)
hbox = QHBoxLayout()
hbox.addWidget(QLabel("Tree type:"))
hbox.addWidget(self._tree_type_combo)
hbox.addStretch()
data_group = QGroupBox("Data")
data_vbox = QVBoxLayout()
data_vbox.setContentsMargins(2, 10, 2, 2)
data_vbox.setContentsMargins(1, 10, 1, 1)
data_vbox.addLayout(hbox)
data_vbox.addWidget(self._data_tree)
data_group.setLayout(data_vbox)
splitter.insertWidget(0, mdata_group)
splitter.insertWidget(1, data_group)
vbox.addWidget(splitter)
main_splitter.addWidget(data_group)
main_splitter.setSizes([200, 600])
vbox.addWidget(main_splitter)
def metadataTreeResize(self, index):
self._mdata_tree.resizeColumnToContents(index.column())
@ -107,16 +105,23 @@ class FileView(QWidget):
comm.communicator.item_selected.emit(item)
def update(self):
data_model = TreeModel(self._file_handler, TreeType.Data)
metadata_model = TreeModel(self._file_handler, TreeType.Metadata)
tt = TreeType.Data
if self._tree_type_combo.currentText() == TreeType.Data.value:
print("Data")
tt = TreeType.Data
elif self._tree_type_combo.currentText() == TreeType.Full.value:
tt = TreeType.Full
elif self._tree_type_combo.currentText() == TreeType.Metadata.value:
tt = TreeType.Metadata
data_model = TreeModel(self._file_handler, tt)
self._data_tree.setModel(data_model)
selection_model = QItemSelectionModel(data_model)
self._data_tree.setSelectionModel(selection_model)
selection_model.currentChanged.connect(self.dataTreeSelection)
self._mdata_tree.setModel(metadata_model)
for i in range(data_model.columnCount(None)):
self._data_tree.resizeColumnToContents(i)
self._mdata_tree.resizeColumnToContents(i)
self._info.setFileInfo(self._file_handler.file_descriptor)
def reset(self):
pass