Window.py 2.16 KiB
# Window.py -- Pamhyr
# Copyright (C) 2023  INRAE
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program 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.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

# -*- coding: utf-8 -*-

import os
import logging

from View.Tools.PamhyrWindow import PamhyrWindow

from PyQt5.QtCore import QCoreApplication

_translate = QCoreApplication.translate
logger = logging.getLogger()


from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings

class DocWindow(PamhyrWindow):
    _pamhyr_ui = "WebView"
    _pamhyr_name = "Doc"

    def _path_file(self, filename):
        return os.path.abspath(
            os.path.join(
                os.path.dirname(__file__),
                "..", "..", "..", "doc", filename
            )
        )

    def __init__(self, filename=None,
                 study=None, config=None,
                 parent=None):
        super(DocWindow, self).__init__(
            title = self._pamhyr_name,
            study = study,
            config = config,
            options = [],
            parent = parent

        )

        self.setup_web_engine()
        self.setup_url(filename)

    def setup_web_engine(self):
        vl = self.find(QVBoxLayout, "verticalLayout")
        self._web_view = QWebEngineView()

        settings = self._web_view.settings()
        settings.setAttribute(QWebEngineSettings.PluginsEnabled, True)
        settings.setAttribute(QWebEngineSettings.JavascriptEnabled, False)

        vl.addWidget(self._web_view)

    def setup_url(self, filename):
        self._web_view.setUrl(QUrl(f"file://{self._path_file(filename)}"))