From 8147a43753206b76dd29a51dd65f36659d166063 Mon Sep 17 00:00:00 2001
From: Jan Grewe <jan.grewe@g-node.org>
Date: Wed, 6 Jan 2021 15:48:49 +0100
Subject: [PATCH] [central view] add EntityInfo view

---
 central_widget.py | 66 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)

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