# 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 )

