diff --git a/central_widget.py b/central_widget.py index 8e2dd8f..1ca751b 100644 --- a/central_widget.py +++ b/central_widget.py @@ -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("

Entity Information

") + 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)