class WebPage(QWebPage): def __init__(self): super(WebPage, self).__init__() self.inspector = QWebInspector() self.inspector.setPage(self) self.inspector.resize(1024, 400) diskCache = QNetworkDiskCache(self) diskCache.setCacheDirectory(assets.fs.dataPath() + '/Cache') self.networkAccessManager().setCache(diskCache) self.networkAccessManager().setCookieJar(assets.dataJar) def acceptNavigationRequest(self, frame, request, type): if(type == QWebPage.NavigationTypeLinkClicked): url = request.url().toString() if(frame == self.mainFrame()): self.view().load(url) return False elif frame == None: # self.createWindow(QWebPage.WebBrowserWindow, url) webbrowser.open(request.url().toString()) return False return QWebPage.acceptNavigationRequest(self, frame, request, type) # def downloadRequested(self, request): # print(request) def findText(self, text): return super(WebPage, self).findText(text, QWebPage.FindBackward) def showInspector(self): self.inspector.show() self.inspector.activateWindow() def hideInspector(self): self.inspector.close() def createWindow(self, type, url = None): from window import Window window = Window(self.view().parentWidget(), url, isDialog = (type == QWebPage.WebModalDialog)) return window.webView.page() def javaScriptAlert(self, frame, msg): QMessageBox.information(self.view().parentWidget(), None, msg) def javaScriptConfirm(self, frame, msg): return QMessageBox.question(self.view().parentWidget(), None, msg) == QMessageBox.Yes # There is a bug in PyQt # def javaScriptPrompt(self, frame, msg, defaultValue): # result = QInputDialog.getText(self.view().parentWidget(), None, msg) # return (result[1], result[0]) def close(self): self.hideInspector() assets.dataJar.save()
def setupUi(self): self.view = webview.WebView() self.view.setAcceptHoverEvents(True) scene = QGraphicsScene() scene.addItem(self.view) scene.setActiveWindow(self.view) self.gview = QGraphicsView(scene, self) self.gview.setFrameShape(QFrame.NoFrame) self.gview.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.gview.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) mainLayout = QVBoxLayout() mainLayout.addWidget(self.gview) mainLayout.setContentsMargins(0, 0, 0, 0) mainLayout.setSpacing(0) self.setLayout(mainLayout) if "dev" in sys.argv: print("Dev mode") inspector = QWebInspector() inspector.setPage(self.view.page()) inspector.setVisible(True) inspector.show() self.setWindowIcon(QIcon("python.png"))
class WebInspector(QWidget): """WebInspector widget class""" def __init__(self, parent): super(WebInspector, self).__init__(parent) vbox = QVBoxLayout(self) self._webInspector = QWebInspector(self) vbox.addWidget(self._webInspector) self.btnDock = QPushButton(translations.TR_UNDOCK) vbox.addWidget(self.btnDock) ExplorerContainer.register_tab(translations.TR_TAB_WEB_INSPECTOR, self) IDE.register_service('web_inspector', self) def refresh_inspector(self): """Refresh WebInspector widget by hiding and showing""" self._webInspector.hide() self._webInspector.show() def set_inspection_page(self, page): """Method to load an argument page object on the WebInspector""" self._webInspector.setPage(page) self._webInspector.setVisible(True)
class WebPage(QWebPage): def __init__(self): super(WebPage, self).__init__() self.inspector = QWebInspector() self.inspector.setPage(self) self.inspector.resize(1024, 400) diskCache = QNetworkDiskCache(self) diskCache.setCacheDirectory(assets.fs.dataPath() + '/Cache') self.networkAccessManager().setCache(diskCache) self.networkAccessManager().setCookieJar(assets.dataJar) def javaScriptConsoleMessage(self, messgae, lineNumber, sourceId): if assets.manifest['debug']: print("==>[console]: %s @%s: %s" % (sourceId, lineNumber, messgae)) def userAgentForUrl(self, url): return "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36" def acceptNavigationRequest(self, frame, request, type): if(type == QWebPage.NavigationTypeLinkClicked): url = request.url().toString() if(frame == self.mainFrame()): self.view().load(url) return False elif frame == None: # self.createWindow(QWebPage.WebBrowserWindow, url) webbrowser.open(request.url().toString()) return False return QWebPage.acceptNavigationRequest(self, frame, request, type) # def downloadRequested(self, request): # print(request) def findText(self, text): return super(WebPage, self).findText(text, QWebPage.FindBackward) def showInspector(self): self.inspector.show() self.inspector.activateWindow() def hideInspector(self): self.inspector.close() def createWindow(self, type, url = None): from dae.window import Window window = Window(self.view().parentWidget(), url, isDialog = (type == QWebPage.WebModalDialog)) return window.webView.page() def javaScriptAlert(self, frame, msg): QMessageBox.information(self.view().parentWidget(), None, msg) def javaScriptConfirm(self, frame, msg): return QMessageBox.question(self.view().parentWidget(), None, msg) == QMessageBox.Yes # There is a bug in PyQt # def javaScriptPrompt(self, frame, msg, defaultValue): # result = QInputDialog.getText(self.view().parentWidget(), None, msg) # return (result[1], result[0]) def close(self): self.hideInspector() assets.dataJar.save()