Files
libriis/classes/view.py
T

101 lines
2.9 KiB
Python

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, os
from PyQt5 import QtCore
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QFont, QSyntaxHighlighter
from PyQt5.QtWidgets import QWidget, QLabel, QTabWidget, QVBoxLayout, 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(QWidget):
def __init__(self, core):
super(CodeEditor, self).__init__()
self.core = core
self.layout = QVBoxLayout(self)
self.layout.setContentsMargins(0,0,0,0)
# Initialize tab screen
self.tabs = QTabWidget()
self.scsstab = QPlainTextEdit()
self.scssfile = open(os.path.join(self.core.cwd,'assets/scss/styles.scss'))
scssstr = self.scssfile.read()
self.scsstab.insertPlainText(scssstr)
self.jstab = QPlainTextEdit()
self.jsfile = open(os.path.join(self.core.cwd,'assets/js/script.js'))
jsstr = self.jsfile.read()
self.jstab.insertPlainText(jsstr)
# Add tabs
self.tabs.addTab(self.scsstab,"scss")
self.tabs.addTab(self.jstab,"js")
# Add tabs to widget
self.layout.addWidget(self.tabs)
self.setLayout(self.layout)
# 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(core)
hsplitter.addWidget(self.codeeditor)
hbox.addWidget(hsplitter)
# def onChanged(self, text):
# print("ViewTba Layout Changed")
# self.lbl.setText(text)
# self.lbl.adjustSize()