示例#1
0
 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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
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
示例#5
0
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_()
示例#6
0
    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 = ''
示例#7
0
 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 = ''
示例#8
0
    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 = ''
示例#9
0
文件: browser.py 项目: JJY-99/spyder
                  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):
示例#10
0
 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)
示例#12
0
 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)