# An example of creating a dockable panel from Python.
# This script creates a simple PySide6 Qt web browser.

import hiero.ui
from PySide6.QtCore import (
  Qt,
  QUrl
)
from PySide6.QtWidgets import (
  QLineEdit,
  QSizePolicy,
  QToolBar,
  QWidget,
  QVBoxLayout
)
from PySide6.QtOpenGLWidgets import QOpenGLWidget
from PySide6.QtWebEngineCore import QWebEnginePage
from PySide6.QtWebEngineWidgets import QWebEngineView


class WebBrowserWidget(QWidget):
    def changeLocation(self):
        self.webView.load( QUrl(self.locationEdit.text()) )

    def __init__(self):
        QWidget.__init__( self )

        self.setObjectName( "uk.co.thefoundry.webwidget.1" )
        self.setWindowTitle( "Web Browser" )

        # If we set WA_DeleteOnClose, the widget will be destroyed when closed.
        # If not, it'll remain in the Windows menu and can be shown again.
        # self.setAttribute( Qt.WA_DeleteOnClose, True )

        self.webViewContainer = QOpenGLWidget()
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        self.webViewContainer.setLayout(layout)
        self.webView = QWebEngineView()
        self.webViewContainer.layout().addWidget(self.webView)
        self.webViewContainer.winId()
        webViewWindowContainer = QWidget.createWindowContainer(self.webViewContainer.windowHandle())

        self.setLayout( QVBoxLayout() )

        self.locationEdit = QLineEdit( 'https://www.foundry.com' )
        self.locationEdit.setSizePolicy( QSizePolicy.Expanding, self.locationEdit.sizePolicy().verticalPolicy() )
        self.locationEdit.returnPressed.connect(self.changeLocation)

        self.layout().addWidget( self.locationEdit )

        bar = QToolBar()
        bar.addAction( self.webView.pageAction(QWebEnginePage.Back))
        bar.addAction( self.webView.pageAction(QWebEnginePage.Forward))
        bar.addAction( self.webView.pageAction(QWebEnginePage.Stop))
        bar.addAction( self.webView.pageAction(QWebEnginePage.Reload))
        bar.addSeparator()

        self.layout().addWidget( bar )
        self.layout().addWidget( webViewWindowContainer )

        self.webView.load( QUrl( self.locationEdit.text() ) )


webBrowser = WebBrowserWidget()
wm = hiero.ui.windowManager()
wm.addWindow( webBrowser )

