[central view] add EntityInfo view

This commit is contained in:
Jan Grewe 2021-01-06 15:48:49 +01:00
parent 49d6749ecd
commit 8147a43753

View File

@ -122,6 +122,72 @@ class FileView(QWidget):
pass
class EntityInfo(QWidget):
icon_size = QSize(30, 30)
def __init__(self, parent):
super().__init__(parent=parent)
self.setLayout(QHBoxLayout())
self._metadata_tree = QTreeView()
# self._metadata_tree.expanded.connect(self.metadataTreeResize)
# self._metadata_tree.collapsed.connect(self.metadataTreeResize)
self._metadata_tree.setAlternatingRowColors(True)
self._metadata_tree.setUniformRowHeights(True) # Allows for scrolling optimizations.
self._metadata_tree.setWindowTitle("Metadata Tree")
self._metadata_tree.setIconSize(self.icon_size)
mheader = self._metadata_tree.header()
mheader.setStretchLastSection(False)
mheader.setSectionResizeMode(1, QHeaderView.ResizeToContents)
mheader.setSectionResizeMode(2, QHeaderView.ResizeToContents)
mheader.setSectionResizeMode(0, QHeaderView.Stretch)
mdata_grp = QGroupBox("Metadata")
mdata_grp.setLayout(QVBoxLayout())
mdata_grp.layout().setContentsMargins(1, 10, 1, 1)
mdata_grp.layout().addWidget(self._metadata_tree)
file_info_grp = QGroupBox("File info")
file_info_grp.setLayout(QVBoxLayout())
file_info_grp.layout().setContentsMargins(1, 10, 1, 1)
self._file_info = QTextEdit("File infomation")
self._file_info.setEnabled(True)
self._file_info.setTextInteractionFlags(Qt.TextSelectableByKeyboard | Qt.TextSelectableByMouse)
self._file_info.setFrameShape(QFrame.NoFrame)
self._file_info.setLineWrapMode(QTextEdit.WidgetWidth)
file_info_grp.layout().addWidget(self._file_info)
entity_info_grp = QGroupBox("Entity info")
entity_info_grp.setLayout(QVBoxLayout())
entity_info_grp.layout().setContentsMargins(1, 10, 1, 1)
self._entity_info = QTextEdit("<h3>Entity Information</h3>")
self._entity_info.setEnabled(False)
entity_info_grp.layout().addWidget(self._entity_info)
splitter = QSplitter(Qt.Horizontal)
splitter.addWidget(file_info_grp)
splitter.addWidget(entity_info_grp)
splitter.addWidget(mdata_grp)
splitter.setSizes([200, 400, 0])
splitter.setStretchFactor(0, 0)
splitter.setStretchFactor(1, 1)
splitter.setStretchFactor(2, 1)
self.layout().addWidget(splitter)
def setFileInfo(self, file_info):
if file_info is not None:
self._file_info.setText(file_info.toHtml())
def setEntityInfo(self, entityInfo):
if not isinstance(entityInfo, ItemDescriptor):
print("Meh! wrong item")
metadata_model = TreeModel(self._file_handler, TreeType.Metadata)
self._metadata_tree.setModel(metadata_model)
for i in range(metadata_model.columnCount(None)):
self._metadata_tree.resizeColumnToContents(i)
class SplashScreen(QWidget):
keyPressed = pyqtSignal(int)