#!/usr/bin/python
# -*- coding: utf-8 -*-

from PyQt5 import QtCore
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QFont, QSyntaxHighlighter
from PyQt5.QtWidgets import QWidget, QLabel, QTabWidget, QHBoxLayout, QSplitter, QPlainTextEdit
from PyQt5.QtWebKit import QWebSettings
from PyQt5.QtWebKitWidgets import QWebView, QWebInspector


class WebkitView(QWebView):
   def __init__(self, port):
      self.port = port
      self.view = QWebView.__init__(self)
      self.load(QUrl('http://localhost:'+str(self.port)))
      self.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
      # self.settings().setAttribute(QWebSettings.PluginsEnabled, True)


class WebkitInspector(QWebInspector):
   def __init__(self, webkitview):
      super(WebkitInspector, self).__init__()
      self.webkitview = webkitview
      self.setPage(self.webkitview.page())
      # TODO: webkitinspector is disappearing when chaging tabs

class CodeEditor(QPlainTextEdit):
   def __init__(self):
      super(CodeEditor, self).__init__()
      font = QFont()
      font.setFamily('Courier')
      font.setFixedPitch(True)
      font.setPointSize(10)
      self.setFont(font)
      # self.highlighter = Highlighter(self.document())
      # https://pypi.python.org/pypi/QScintilla/2.9.2


class ViewStack(QWidget):
   def __init__(self, core):
      super(ViewStack, self).__init__()

      # self.grid = QGridLayout()
      hbox = QHBoxLayout()
      hbox.setContentsMargins(0,0,0,0)
      self.setLayout(hbox)


      # webviewbox = QVBoxLayout()
      vsplitter = QSplitter(QtCore.Qt.Vertical)

      self.webkitview = WebkitView(core.server.port)
      vsplitter.addWidget(self.webkitview)

      self.webkitinspector = WebkitInspector(self.webkitview)
      vsplitter.addWidget(self.webkitinspector)

      hsplitter = QSplitter(QtCore.Qt.Horizontal)
      hsplitter.addWidget(vsplitter)

      self.codeeditor = CodeEditor()
      hsplitter.addWidget(self.codeeditor)

      hbox.addWidget(hsplitter)


   # def onChanged(self, text):
   #    print("ViewTba Layout Changed")
   #    self.lbl.setText(text)
   #    self.lbl.adjustSize()