|
|
|
@ -130,8 +130,6 @@ from PyQt5.QtWidgets import QApplication
|
|
|
|
|
from PyQt5.QtPrintSupport import QPrinter
|
|
|
|
|
from PyQt5.QtWebEngineWidgets import QWebEnginePage
|
|
|
|
|
|
|
|
|
|
from support_phantompy import vsetup_logging
|
|
|
|
|
|
|
|
|
|
global LOG
|
|
|
|
|
import logging
|
|
|
|
|
import warnings
|
|
|
|
@ -164,16 +162,16 @@ def prepare(sdir='/tmp'):
|
|
|
|
|
|
|
|
|
|
class Render(QWebEnginePage):
|
|
|
|
|
def __init__(self, app, do_print=False, do_save=True):
|
|
|
|
|
app.ldone = []
|
|
|
|
|
self._app = app
|
|
|
|
|
self.do_print = do_print
|
|
|
|
|
self.do_save = do_save
|
|
|
|
|
self.percent = 0
|
|
|
|
|
self.uri = None
|
|
|
|
|
self.jsfile = None
|
|
|
|
|
self.htmlfile = None
|
|
|
|
|
self.pdffile = None
|
|
|
|
|
QWebEnginePage.__init__(self)
|
|
|
|
|
app.ldone = []
|
|
|
|
|
self._app = app
|
|
|
|
|
self.do_print = do_print
|
|
|
|
|
self.do_save = do_save
|
|
|
|
|
self.percent = 0
|
|
|
|
|
self.uri = None
|
|
|
|
|
self.jsfile = None
|
|
|
|
|
self.htmlfile = None
|
|
|
|
|
self.pdffile = None
|
|
|
|
|
QWebEnginePage.__init__(self)
|
|
|
|
|
|
|
|
|
|
def run(self, url, pdffile, htmlfile, jsfile):
|
|
|
|
|
self._app.lstart.append(id(self))
|
|
|
|
@ -205,36 +203,37 @@ class Render(QWebEnginePage):
|
|
|
|
|
LOG.debug(f"phantom.py: loading 10")
|
|
|
|
|
|
|
|
|
|
def _onConsoleMessage(self, *args):
|
|
|
|
|
if len(args) > 3:
|
|
|
|
|
level, txt, lineno, filename = args
|
|
|
|
|
else:
|
|
|
|
|
level = 1
|
|
|
|
|
txt, lineno, filename = args
|
|
|
|
|
LOG.debug(f"CONSOLE {lineno} {txt} {filename}")
|
|
|
|
|
if "__PHANTOM_PY_DONE__" in txt:
|
|
|
|
|
self.percent = 40
|
|
|
|
|
# If we get this magic string, it means that the external JS is done
|
|
|
|
|
if self.do_save:
|
|
|
|
|
self.toHtml(self._html_callback)
|
|
|
|
|
return
|
|
|
|
|
# drop through
|
|
|
|
|
txt = "__PHANTOM_PY_SAVED__"
|
|
|
|
|
if "__PHANTOM_PY_SAVED__" in txt:
|
|
|
|
|
self.percent = 50
|
|
|
|
|
if self.do_print:
|
|
|
|
|
self._print()
|
|
|
|
|
return
|
|
|
|
|
txt = "__PHANTOM_PY_PRINTED__"
|
|
|
|
|
if "__PHANTOM_PY_PRINTED__" in txt:
|
|
|
|
|
self.percent = 60
|
|
|
|
|
self._exit(level)
|
|
|
|
|
if len(args) > 3:
|
|
|
|
|
level, txt, lineno, filename = args
|
|
|
|
|
else:
|
|
|
|
|
level = 1
|
|
|
|
|
txt, lineno, filename = args
|
|
|
|
|
LOG.debug(f"CONSOLE {lineno} {txt} {filename}")
|
|
|
|
|
if "__PHANTOM_PY_DONE__" in txt:
|
|
|
|
|
self.percent = 40
|
|
|
|
|
# If we get this magic string, it means that the external JS is done
|
|
|
|
|
if self.do_save:
|
|
|
|
|
self.toHtml(self._html_callback)
|
|
|
|
|
return
|
|
|
|
|
# drop through
|
|
|
|
|
txt = "__PHANTOM_PY_SAVED__"
|
|
|
|
|
if "__PHANTOM_PY_SAVED__" in txt:
|
|
|
|
|
self.percent = 50
|
|
|
|
|
if self.do_print:
|
|
|
|
|
self._print()
|
|
|
|
|
return
|
|
|
|
|
txt = "__PHANTOM_PY_PRINTED__"
|
|
|
|
|
if "__PHANTOM_PY_PRINTED__" in txt:
|
|
|
|
|
self.percent = 60
|
|
|
|
|
self._exit(level)
|
|
|
|
|
|
|
|
|
|
def _loadFinished(self, result):
|
|
|
|
|
self.percent = 30
|
|
|
|
|
LOG.info(f"phantom.py: _loadFinished {result} {self.percent}")
|
|
|
|
|
LOG.debug(f"phantom.py: Evaluating JS from {self.jsfile}")
|
|
|
|
|
self.runJavaScript("document.documentElement.contentEditable=true")
|
|
|
|
|
self.runJavaScript(self.js_contents)
|
|
|
|
|
# RenderProcessTerminationStatus ?
|
|
|
|
|
self.percent = 30
|
|
|
|
|
LOG.info(f"phantom.py: _loadFinished {result} {self.percent}")
|
|
|
|
|
LOG.debug(f"phantom.py: Evaluating JS from {self.jsfile}")
|
|
|
|
|
self.runJavaScript("document.documentElement.contentEditable=true")
|
|
|
|
|
self.runJavaScript(self.js_contents)
|
|
|
|
|
|
|
|
|
|
def _html_callback(self, *args):
|
|
|
|
|
"""print(self, QPrinter, Callable[[bool], None])"""
|
|
|
|
|