[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 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.QtGui import QPixmap
from PyQt5.QtCore import QItemSelectionModel, Qt, QSettings, QSize, pyqtSignal 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 from plot_screen import PlotScreen
import communicator as comm import communicator as comm
import constants as cnst import constants as cnst
from tree_model import TreeModel, TreeType from tree_model import NixTreeItem, TagTreeItem, TreeModel, TreeType
class CentralWidget(QWidget): class CentralWidget(QWidget):
@ -49,25 +49,12 @@ class FileView(QWidget):
vbox = QVBoxLayout() vbox = QVBoxLayout()
self.setLayout(vbox) self.setLayout(vbox)
splitter = QSplitter(Qt.Horizontal)
self._mdata_tree = QTreeView(self) main_splitter = QSplitter(Qt.Vertical)
self._mdata_tree.expanded.connect(self.metadataTreeResize) self.layout().addWidget(main_splitter)
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)
mdata_group = QGroupBox("Metadata") self._info = EntityInfo(self)
mdata_group.setLayout(QVBoxLayout()) main_splitter.addWidget(self._info)
mdata_group.layout().setContentsMargins(2, 10, 2, 2)
mdata_group.layout().addWidget(self._mdata_tree)
self._data_tree = QTreeView(self) self._data_tree = QTreeView(self)
self._data_tree.expanded.connect(self.dataTreeResize) self._data_tree.expanded.connect(self.dataTreeResize)
@ -84,15 +71,26 @@ class FileView(QWidget):
header.setSectionResizeMode(2, QHeaderView.ResizeToContents) header.setSectionResizeMode(2, QHeaderView.ResizeToContents)
header.setSectionResizeMode(0, QHeaderView.Stretch) 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_group = QGroupBox("Data")
data_vbox = QVBoxLayout() 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_vbox.addWidget(self._data_tree)
data_group.setLayout(data_vbox) data_group.setLayout(data_vbox)
splitter.insertWidget(0, mdata_group) main_splitter.addWidget(data_group)
splitter.insertWidget(1, data_group) main_splitter.setSizes([200, 600])
vbox.addWidget(splitter) vbox.addWidget(main_splitter)
def metadataTreeResize(self, index): def metadataTreeResize(self, index):
self._mdata_tree.resizeColumnToContents(index.column()) self._mdata_tree.resizeColumnToContents(index.column())
@ -107,16 +105,23 @@ class FileView(QWidget):
comm.communicator.item_selected.emit(item) comm.communicator.item_selected.emit(item)
def update(self): def update(self):
data_model = TreeModel(self._file_handler, TreeType.Data) tt = TreeType.Data
metadata_model = TreeModel(self._file_handler, TreeType.Metadata) 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) self._data_tree.setModel(data_model)
selection_model = QItemSelectionModel(data_model) selection_model = QItemSelectionModel(data_model)
self._data_tree.setSelectionModel(selection_model) self._data_tree.setSelectionModel(selection_model)
selection_model.currentChanged.connect(self.dataTreeSelection) selection_model.currentChanged.connect(self.dataTreeSelection)
self._mdata_tree.setModel(metadata_model)
for i in range(data_model.columnCount(None)): for i in range(data_model.columnCount(None)):
self._data_tree.resizeColumnToContents(i) self._data_tree.resizeColumnToContents(i)
self._mdata_tree.resizeColumnToContents(i) self._info.setFileInfo(self._file_handler.file_descriptor)
def reset(self): def reset(self):
pass pass