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