From ab94435a82db9167983828ce598de401aacc2846 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Wed, 6 Jan 2021 15:50:31 +0100 Subject: [PATCH] [central view] add comboBox for tree type selection, remove metadata tree --- central_widget.py | 63 +++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/central_widget.py b/central_widget.py index 1ca751b..d995ded 100644 --- a/central_widget.py +++ b/central_widget.py @@ -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