def __init__(self, use_file_absolute_path: bool = True, alternative_base_path: str = ""): super().__init__() if use_file_absolute_path or len(alternative_base_path) == 0: self.base_path = os.path.dirname(os.path.abspath(__file__)) else: self.base_path = alternative_base_path self._page = QWebEnginePage() self.setPage(self._page) self._channel = QWebChannel() self._page.setWebChannel(self._channel) self._loadPage() self.setContextMenuPolicy(Qt.NoContextMenu)
def __init__(self, parent, CONF, term_url='http://127.0.0.1:8070', handler=None): """Webview main constructor.""" super().__init__(parent) web_page = QWebEnginePage(self) self.setPage(web_page) self.source_text = '' self.parent = parent self.CONF = CONF self.shortcuts = self.create_shortcuts() self.channel = QWebChannel(self.page()) self.page().setWebChannel(self.channel) self.channel.registerObject('handler', handler) self.term_url = QUrl(term_url) self.load(self.term_url) self.document = self.page() try: self.document.profile().clearHttpCache() except AttributeError: pass self.initial_y_pos = 0 self.setFocusPolicy(Qt.ClickFocus)
def _on_link(self, url): su = url.toString(QtCore.QUrl.RemoveQuery) if "/spectra/" in su: view = QWebEngineView(self.ui) wp = QWebEnginePage() am = self.view.page().networkAccessManager() wp.setNetworkAccessManager(am) view.setPage(wp) request = self._make_request(url) response = am.get(request) def resp_finished(): html = response.readAll() matches = re_dl_url.findall(html) if matches: self.download(matches[0].decode('ascii')) response.deleteLater() response.finished.connect(resp_finished) else: self.view.load(url)
class QtWebPageRender: url: str html_str: str html_parser: requests_html.HTML def __init__(self, qt_app_singleton=None): self._qt_app = qt_app_singleton or get_qt_application_singleton() self._qt_webpage = QWebEnginePage() self._qt_webpage.loadFinished.connect(self._on_load_finished) def _on_load_finished(self): self._qt_webpage.toHtml(self._update_html) def _update_html(self, qt_webpage_to_html: str): self.html_str = qt_webpage_to_html self.html_parser = requests_html.HTML(url=self.url, html=self.html_str) self.find = self.html_parser.find self.xpath = self.html_parser.xpath self._qt_app.quit() def set_url(self, url: str): self.url = url self._qt_webpage.load(QUrl(url)) self._qt_app.exec_() def set_html(self, html: str, base_url: str = ''): self.url = base_url self._qt_webpage.setHtml(html, QUrl(base_url)) self._qt_app.exec_() @property def text(self): return self.html_parser.text
class MapWidget(QWebEngineView): """ The MapWidget class is a QWebEngineView that houses the leaflet map. Since it is a QWidget, it can be added to any QLayout. """ @property def page(self): return self._page @property def channel(self): return self._channel def __init__(self, use_file_absolute_path: bool = True, alternative_base_path: str = ""): super().__init__() if use_file_absolute_path or len(alternative_base_path) == 0: self.base_path = os.path.dirname(os.path.abspath(__file__)) else: self.base_path = alternative_base_path self._page = QWebEnginePage() self.setPage(self._page) self._channel = QWebChannel() self._page.setWebChannel(self._channel) self._loadPage() self.setContextMenuPolicy(Qt.NoContextMenu) def _get_page_path(self): return os.path.join(self.base_path, 'web', 'map.html') def _loadPage(self): html_path = self._get_page_path() # QEventLoop is used to make the page loading behave syncronously init_loop = QEventLoop() self._page.loadFinished.connect(init_loop.quit) self._page.load(QUrl().fromLocalFile(html_path)) init_loop.exec_()
def __init__(self, parent, handle_links=True): super().__init__(parent) self.zoom_factor = 1. self.context_menu = None if WEBENGINE: if handle_links: web_page = WebPage(self) else: web_page = QWebEnginePage(self) self.setPage(web_page) self.source_text = ''
def __init__(self, parent, handle_links=True): QWebEngineView.__init__(self, parent) self.zoom_factor = 1. self.zoom_out_action = create_action(self, _("Zoom out"), icon=ima.icon('zoom_out'), triggered=self.zoom_out) self.zoom_in_action = create_action(self, _("Zoom in"), icon=ima.icon('zoom_in'), triggered=self.zoom_in) if WEBENGINE: if handle_links: web_page = WebPage(self) else: web_page = QWebEnginePage(self) self.setPage(web_page) self.source_text = ''
def __init__(self, parent, handle_links=True, class_parent=None): class_parent = parent if class_parent is None else class_parent if PYQT5: super().__init__(parent, class_parent=class_parent) else: QWebEngineView.__init__(self, parent) SpyderWidgetMixin.__init__(self, class_parent=class_parent) self.zoom_factor = 1. self.context_menu = None if WEBENGINE: if handle_links: web_page = WebPage(self) else: web_page = QWebEnginePage(self) self.setPage(web_page) self.source_text = ''
forward=True, case=False, word=False, regexp=False): """Find text.""" if not WEBENGINE: findflag = QWebEnginePage.FindWrapsAroundDocument else: findflag = 0 if not forward: findflag = findflag | QWebEnginePage.FindBackward if case: findflag = findflag | QWebEnginePage.FindCaseSensitively return self.findText(text, QWebEnginePage.FindFlags(findflag)) def get_selected_text(self): """Return text selected by current text cursor""" return self.selectedText() def set_source_text(self, source_text): """Set source text of the page. Callback for QWebEngineView.""" self.source_text = source_text def get_number_matches(self, pattern, source_text='', case=False, regexp=False, word=False):
def __init__(self, qt_app_singleton=None): self._qt_app = qt_app_singleton or get_qt_application_singleton() self._qt_webpage = QWebEnginePage() self._qt_webpage.loadFinished.connect(self._on_load_finished)
import config from qtpy.QtWidgets import QInputDialog, QLineEdit from qtpy.QtWebEngineWidgets import QWebEnginePage def findText(found): if not found: config.mainWindow.displayMessage("Not found!") if config.pluginContext: config.mainWindow.mainPage.findText(config.pluginContext, QWebEnginePage.FindFlags(), findText) else: text, ok = QInputDialog.getText(config.mainWindow, "QInputDialog.getText()", "Find in Bible Window:", QLineEdit.Normal, "") if ok and text != '': config.mainWindow.mainPage.findText(text, QWebEnginePage.FindFlags(), findText)
def __init__(self, url): self.app = QGuiApplication(sys.argv) QWebEnginePage.__init__(self) self.loadFinished.connect(self.on_page_load) self.mainFrame().load(QUrl(url)) self.app.exec_()
import config from qtpy.QtWidgets import QInputDialog, QLineEdit from qtpy.QtWebEngineWidgets import QWebEnginePage def findText(found): if not found: config.mainWindow.displayMessage("Not found!") if config.pluginContext: config.mainWindow.studyPage.findText(config.pluginContext, QWebEnginePage.FindFlags(), findText) else: text, ok = QInputDialog.getText(config.mainWindow, "QInputDialog.getText()", "Find in Bible Window:", QLineEdit.Normal, "") if ok and text != '': config.mainWindow.studyPage.findText(text, QWebEnginePage.FindFlags(), findText)