From 0cbb6954ed0f6d68e42d16f97772ab87a1b8ae6b Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Thu, 3 Jan 2019 11:27:46 +0100
Subject: [PATCH] [widgets] Implement asset widget

---
 beat/editor/widgets/assetwidget.py | 73 ++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100644 beat/editor/widgets/assetwidget.py

diff --git a/beat/editor/widgets/assetwidget.py b/beat/editor/widgets/assetwidget.py
new file mode 100644
index 00000000..71b1c14f
--- /dev/null
+++ b/beat/editor/widgets/assetwidget.py
@@ -0,0 +1,73 @@
+# vim: set fileencoding=utf-8 :
+###############################################################################
+#                                                                             #
+# Copyright (c) 2019 Idiap Research Institute, http://www.idiap.ch/           #
+# Contact: beat.support@idiap.ch                                              #
+#                                                                             #
+# This file is part of the beat.editor module of the BEAT platform.           #
+#                                                                             #
+# Commercial License Usage                                                    #
+# Licensees holding valid commercial BEAT licenses may use this file in       #
+# accordance with the terms contained in a written agreement between you      #
+# and Idiap. For further information contact tto@idiap.ch                     #
+#                                                                             #
+# Alternatively, this file may be used under the terms of the GNU Affero      #
+# Public License version 3 as published by the Free Software and appearing    #
+# in the file LICENSE.AGPL included in the packaging of this file.            #
+# The BEAT platform is distributed in the hope that it will be useful, but    #
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY  #
+# or FITNESS FOR A PARTICULAR PURPOSE.                                        #
+#                                                                             #
+# You should have received a copy of the GNU Affero Public License along      #
+# with the BEAT platform. If not, see http://www.gnu.org/licenses/.           #
+#                                                                             #
+###############################################################################
+
+from PyQt5.QtCore import QFileSystemWatcher
+
+from PyQt5.QtWidgets import QTabWidget
+from PyQt5.QtWidgets import QTextEdit
+from PyQt5.QtWidgets import QVBoxLayout
+from PyQt5.QtWidgets import QWidget
+
+
+class AssetWidget(QWidget):
+    """
+    This widget will show the asset specific editor and the JSON view of it.
+
+    The corresponding file will be watched and the the widget refreshed
+    accordingly.
+    """
+
+    def __init__(self, parent=None):
+        """Constructor"""
+
+        super(AssetWidget, self).__init__(parent)
+
+        self.jsonWidget = QTextEdit()
+        self.jsonWidget.setReadOnly(True)
+        self.editor = QWidget()
+        self.tabWidget = QTabWidget()
+        self.tabWidget.addTab(self.editor, self.tr("Editor"))
+        self.tabWidget.addTab(self.jsonWidget, self.tr("Raw JSON"))
+
+        layout = QVBoxLayout(self)
+        layout.addWidget(self.tabWidget)
+
+        self.watcher = QFileSystemWatcher()
+
+        self.watcher.fileChanged.connect(self.show_json)
+
+    def show_json(self, file_path):
+        """ Display the content of the file given in parameter
+
+        :param file_path: path to the json file to load
+        """
+
+        files = self.watcher.files()
+        if files:
+            self.watcher.removePaths(files)
+        self.watcher.addPath(file_path)
+
+        with open(file_path) as json_file:
+            self.jsonWidget.setText(json_file.read())
-- 
GitLab