Ejemplo n.º 1
0
    def acceptNavigationRequest(self, url: QUrl,
                                typ: QWebEnginePage.NavigationType,
                                is_main_frame: bool) -> bool:
        """Override acceptNavigationRequest to forward it to the tab API."""
        type_map = {
            QWebEnginePage.NavigationTypeLinkClicked:
            usertypes.NavigationRequest.Type.link_clicked,
            QWebEnginePage.NavigationTypeTyped:
            usertypes.NavigationRequest.Type.typed,
            QWebEnginePage.NavigationTypeFormSubmitted:
            usertypes.NavigationRequest.Type.form_submitted,
            QWebEnginePage.NavigationTypeBackForward:
            usertypes.NavigationRequest.Type.back_forward,
            QWebEnginePage.NavigationTypeReload:
            usertypes.NavigationRequest.Type.reloaded,
            QWebEnginePage.NavigationTypeOther:
            usertypes.NavigationRequest.Type.other,
        }
        try:
            type_map[QWebEnginePage.NavigationTypeRedirect] = (
                usertypes.NavigationRequest.Type.redirect)
        except AttributeError:
            # Added in Qt 5.14
            pass

        navigation = usertypes.NavigationRequest(
            url=url,
            navigation_type=type_map.get(
                typ, usertypes.NavigationRequest.Type.other),
            is_main_frame=is_main_frame)
        self.navigation_request.emit(navigation)
        return navigation.accepted
Ejemplo n.º 2
0
 def acceptNavigationRequest(self, url: QUrl,
                             typ: QWebEnginePage.NavigationType,
                             is_main_frame: bool) -> bool:
     """Override acceptNavigationRequest to forward it to the tab API."""
     type_map = {
         QWebEnginePage.NavigationTypeLinkClicked:
         usertypes.NavigationRequest.Type.link_clicked,
         QWebEnginePage.NavigationTypeTyped:
         usertypes.NavigationRequest.Type.typed,
         QWebEnginePage.NavigationTypeFormSubmitted:
         usertypes.NavigationRequest.Type.form_submitted,
         QWebEnginePage.NavigationTypeBackForward:
         usertypes.NavigationRequest.Type.back_forward,
         QWebEnginePage.NavigationTypeReload:
         usertypes.NavigationRequest.Type.reloaded,
         QWebEnginePage.NavigationTypeOther:
         usertypes.NavigationRequest.Type.other,
     }
     navigation = usertypes.NavigationRequest(url=url,
                                              navigation_type=type_map[typ],
                                              is_main_frame=is_main_frame)
     self.navigation_request.emit(navigation)
     return navigation.accepted
Ejemplo n.º 3
0
    def acceptNavigationRequest(self,
                                frame: QWebFrame,
                                request: QNetworkRequest,
                                typ: QWebPage.NavigationType) -> bool:
        """Override acceptNavigationRequest to handle clicked links.

        Setting linkDelegationPolicy to DelegateAllLinks and using a slot bound
        to linkClicked won't work correctly, because when in a frameset, we
        have no idea in which frame the link should be opened.

        Checks if it should open it in a tab (middle-click or control) or not,
        and then conditionally opens the URL here or in another tab/window.
        """
        type_map = {
            QWebPage.NavigationTypeLinkClicked:
                usertypes.NavigationRequest.Type.link_clicked,
            QWebPage.NavigationTypeFormSubmitted:
                usertypes.NavigationRequest.Type.form_submitted,
            QWebPage.NavigationTypeFormResubmitted:
                usertypes.NavigationRequest.Type.form_resubmitted,
            QWebPage.NavigationTypeBackOrForward:
                usertypes.NavigationRequest.Type.back_forward,
            QWebPage.NavigationTypeReload:
                usertypes.NavigationRequest.Type.reloaded,
            QWebPage.NavigationTypeOther:
                usertypes.NavigationRequest.Type.other,
        }
        is_main_frame = frame is self.mainFrame()
        navigation = usertypes.NavigationRequest(url=request.url(),
                                                 navigation_type=type_map[typ],
                                                 is_main_frame=is_main_frame)

        if navigation.navigation_type == navigation.Type.reloaded:
            self.reloading.emit(navigation.url)

        self.navigation_request.emit(navigation)
        return navigation.accepted