def onrequest(url): log.info("Received an file open request %s", url) path = url.path() exists = QFile(path).exists() if exists and \ ('pydevd.py' not in url.path() and # PyCharm debugger 'run_profiler.py' not in url.path()): # PyCharm profiler open_requests.append(url)
def __init__(self, parent=None, bridge=None, *, debug=False, **kwargs): debug = debug or _ORANGE_DEBUG if debug: port = os.environ.setdefault('QTWEBENGINE_REMOTE_DEBUGGING', '12088') warnings.warn( 'To debug QWebEngineView, set environment variable ' 'QTWEBENGINE_REMOTE_DEBUGGING={port} and then visit ' 'http://127.0.0.1:{port}/ in a Chromium-based browser. ' 'See https://doc.qt.io/qt-5/qtwebengine-debugging.html ' 'This has also been done for you.'.format(port=port)) super().__init__(parent, sizeHint=QSize(500, 400), sizePolicy=QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding), visible=False, **kwargs) self.bridge = bridge self.debug = debug with open(_WEBVIEW_HELPERS, encoding="utf-8") as f: self._onloadJS(f.read(), name='webview_helpers', injection_point=QWebEngineScript.DocumentCreation) qtwebchannel_js = QFile("://qtwebchannel/qwebchannel.js") if qtwebchannel_js.open(QFile.ReadOnly): source = bytes(qtwebchannel_js.readAll()).decode("utf-8") with open(_WEBENGINE_INIT_WEBCHANNEL, encoding="utf-8") as f: init_webchannel_src = f.read() self._onloadJS(source + init_webchannel_src % dict(exposeObject_prefix=self._EXPOSED_OBJ_PREFIX), name='webchannel_init', injection_point=QWebEngineScript.DocumentCreation) else: warnings.warn( "://qtwebchannel/qwebchannel.js is not readable.", RuntimeWarning) self._onloadJS(';window.__load_finished = true;', name='load_finished', injection_point=QWebEngineScript.DocumentReady) channel = QWebChannel(self) if bridge is not None: if isinstance(bridge, QWidget): warnings.warn( "Don't expose QWidgets in WebView. Construct minimal " "QObjects instead.", OrangeDeprecationWarning, stacklevel=2) channel.registerObject("pybridge", bridge) channel.registerObject('__bridge', _QWidgetJavaScriptWrapper(self)) self.page().setWebChannel(channel) # Delay showing the widget. Observation indicate this results in # fewer window resizes. QTimer.singleShot(1, self.show)
def canvas_icons(name): # type: (str) -> QIcon """ Return the named canvas icon. """ icon_file = QFile("canvas_icons:" + name) if icon_file.exists(): return QIcon("canvas_icons:" + name) else: return QIcon(resource_filename(os.path.join("icons", name)))
def __init__(self, parent=None, bridge=None, *, debug=False, **kwargs): if debug: import os port = os.environ.setdefault('QTWEBENGINE_REMOTE_DEBUGGING', '12088') warnings.warn( 'To debug QWebEngineView, set environment variable ' 'QTWEBENGINE_REMOTE_DEBUGGING={port} and then visit ' 'http://localhost:{port}/ in a Chromium-based browser. ' 'See https://doc.qt.io/qt-5/qtwebengine-debugging.html ' 'This has also been done for you.'.format(port=port)) super().__init__(parent, sizeHint=QSize(500, 400), sizePolicy=QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding), **kwargs) self.bridge = bridge self.debug = debug with open(_WEBVIEW_HELPERS, encoding="utf-8") as f: self._onloadJS(f.read(), name='webview_helpers', injection_point=QWebEngineScript.DocumentCreation) qtwebchannel_js = QFile("://qtwebchannel/qwebchannel.js") if qtwebchannel_js.open(QFile.ReadOnly): source = bytes(qtwebchannel_js.readAll()).decode("utf-8") with open(_WEBENGINE_INIT_WEBCHANNEL, encoding="utf-8") as f: init_webchannel_src = f.read() self._onloadJS(source + init_webchannel_src % dict(exposeObject_prefix=self._EXPOSED_OBJ_PREFIX), name='webchannel_init', injection_point=QWebEngineScript.DocumentCreation) else: warnings.warn( "://qtwebchannel/qwebchannel.js is not readable.", RuntimeWarning) self._onloadJS(';window.__load_finished = true;', name='load_finished', injection_point=QWebEngineScript.DocumentReady) channel = QWebChannel(self) if bridge is not None: channel.registerObject("pybridge", bridge) channel.registerObject('__self', self) # Subclasses rely in this self.page().setWebChannel(channel)