Ejemplo n.º 1
0
def get_http_auth_credentials(qurl, authenticator, parent=None):
    qurl = QUrl(qurl)
    qurl.setFragment(None)
    realm = authenticator.realm()
    trealm = (' (%s)' % realm) if realm else ''
    ac = parent and parent.get_login_credentials(qurl.toString())
    d = Credentials(
        _('Please specify a password for {0}{1}').format(
            qurl.toString(), trealm), parent)
    if ac is not None:
        if ac['autologin']:
            authenticator.setUser(ac['username'])
            authenticator.setPassword(ac['password'])
            return
        d.credentials = ac['username'], ac['password']

    if d.exec_() == d.Accepted:
        username, password = d.credentials
        authenticator.setUser(username)
        authenticator.setPassword(password)
        if parent is not None:
            parent.on_login_form_submit(qurl.toString(), username, password)
    else:
        if parent is not None:
            parent.setHtml(
                '<p style="font-family:sans-serif">{} {}</p>'.format(
                    _('Authentication required to access: '),
                    '<a href="{0}">{0}</a>'.format(qurl.toDisplayString())))
Ejemplo n.º 2
0
    class HistoryEntry:
        def __init__(self):
            self.id = 0
            self.count = 0
            self.date = QDateTime()
            self.url = QUrl()
            self.urlString = ''
            self.title = ''

        def fillDbobj(self, dbobj):
            for field in ('id', 'count', 'urlString', 'title'):
                setattr(dbobj, field, getattr(self, field))
            dbobj.date = self.date.toMSecsSinceEpoch()
            dbobj.url = self.url.toString()

        @classmethod
        def CreateFromDbobj(cls, dbobj):
            entry = cls()
            entry.id = dbobj.id
            entry.count = dbobj.id
            entry.date = QDateTime.fromMSecsSinceEpoch(dbobj.date)
            entry.url = QUrl(dbobj.url)
            entry.urlString = entry.url.toEncoded().data().decode()
            entry.title = dbobj.title
            return entry
Ejemplo n.º 3
0
    def dropEvent(self, event):
        '''
        @param: event QDropEvent
        '''
        if event.mimeData().hasUrls():
            dropUrl = event.mimeData().urls()[0]
            if WebView.isUrlValid(dropUrl):
                self.setText(dropUrl.toString())
                self.loadRequest(LoadRequest(dropUrl))

                event = QFocusEvent(QFocusEvent.FocusOut)
                super().focusOutEvent(event)
                return
        elif event.mimeData().hasText():
            dropText = event.mimeData().text().strip()
            dropUrl = QUrl(dropText)
            if WebView.isUrlValid(dropUrl):
                self.setText(dropUrl.toString())
                self.loadRequest(LoadRequest(dropUrl))

                event = QFocusEvent(QFocusEvent.FocusOut)
                super().focusOutEvent(event)
                return
            else:
                self.setText(dropText)
                self.setFocus()
                return

        super().dropEvent(event)
Ejemplo n.º 4
0
def get_proxy_auth_credentials(qurl, authenticator, proxy_host, parent=None):
    qurl = QUrl(qurl)
    qurl.setFragment(None)
    d = Credentials(_('Please specify a password for {0} at the proxy: {1}').format(qurl.toString(), proxy_host), parent)
    if d.exec_() == d.Accepted:
        username, password = d.credentials
        authenticator.setUser(username)
        authenticator.setPassword(password)
Ejemplo n.º 5
0
def get_proxy_auth_credentials(qurl, authenticator, proxy_host, parent=None):
    qurl = QUrl(qurl)
    qurl.setFragment(None)
    d = Credentials(
        _('Please specify a password for {0} at the proxy: {1}').format(
            qurl.toString(), proxy_host), parent)
    if d.exec_() == d.Accepted:
        username, password = d.credentials
        authenticator.setUser(username)
        authenticator.setPassword(password)
Ejemplo n.º 6
0
def get_http_auth_credentials(qurl, authenticator, parent=None):
    qurl = QUrl(qurl)
    qurl.setFragment(None)
    realm = authenticator.realm()
    trealm = (' (%s)' % realm) if realm else ''
    ac = parent and parent.get_login_credentials(qurl.toString())
    d = Credentials(_('Please specify a password for {0}{1}').format(qurl.toString(), trealm), parent)
    if ac is not None:
        if ac['autologin']:
            authenticator.setUser(ac['username'])
            authenticator.setPassword(ac['password'])
            return
        d.credentials = ac['username'], ac['password']

    if d.exec_() == d.Accepted:
        username, password = d.credentials
        authenticator.setUser(username)
        authenticator.setPassword(password)
        if parent is not None:
            parent.on_login_form_submit(qurl.toString(), username, password)
    else:
        if parent is not None:
            parent.setHtml('<p style="font-family:sans-serif">{} {}</p>'.format(
                _('Authentication required to access: '), '<a href="{0}">{0}</a>'.format(qurl.toDisplayString())))
Ejemplo n.º 7
0
 def load_footnote_data(self, current_url):
     fd = self.footnote_data_cache[current_url] = {}
     try:
         raw = self.view.document.javascript('window.calibre_extract.get_footnote_data()', typ='string')
         for x in json.loads(raw or '{}'):
             if x not in fd:
                 qu = QUrl(x)
                 path = qu.toLocalFile()
                 spath = self.spine_path(path)
                 if spath is not None:
                     target = qu.fragment(QUrl.FullyDecoded)
                     fd[qu.toString()] = (spath, target, qu)
                     self.known_footnote_targets[spath].add(target)
     except Exception:
         prints('Failed to get footnote data, with error:')
         import traceback
         traceback.print_exc()
     return fd
Ejemplo n.º 8
0
 def _on_url_changed(self, url: QUrl):
     self.url_le.setText(url.toString())
Ejemplo n.º 9
0
class PageThumbnailer(QObject):
    def __init__(self, parent=None):
        super().__init__(parent)
        self._view = QQuickWidget()  # QQuickWidget
        self._size = QSize(450, 253) * gVar.app.devicePixelRatio()
        self._url = QUrl()
        self._title = ''
        self._loadTitle = False

        self._view.setAttribute(Qt.WA_DontShowOnScreen)
        self._view.setSource(QUrl('qrc:data/thumbnailer.qml'))
        self._view.rootContext().setContextProperty('thumbnailer', self)
        self._view.show()

    def setSize(self, size):
        if size.isValid():
            self._size = size

    def setUrl(self, url):
        if url.isValid():
            self._url = url

    def url(self):
        return self._url

    def loadTitle(self):
        '''
        @return: bool
        '''
        return self._loadTitle

    def setLoadTitle(self, load):
        '''
        @param: load bool
        '''
        self._loadTitle = load

    def title(self):
        title = self._title
        if not title:
            title = self._url.host()
        if not title:
            title = self._url.toString()
        return title

    def start(self):
        if self._view.rootObject() and WebView.isUrlValid(self._url):
            self._view.rootObject().setProperty('url', self._url)
        else:

            def func():
                self.thumbnailCreated.emit(QPixmap())

            QTimer.singleShot(500, func)

    # Q_SIGNALS:
    thumbnailCreated = pyqtSignal(QPixmap)

    # public Q_SLOTS:
    @pyqtSlot(result=str)
    def afterLoadScript(self):
        '''
        @return: QString
        '''
        return Scripts.setCss('::~webkit-scrollbar{display:none;}')

    @pyqtSlot(bool)
    def createThumbnail(self, status):
        '''
        @param: status bool
        '''
        if not status:
            self.thumbnailCreated.emit(QPixmap())
            return

        def func():
            self._title = self._view.rootObject().property('title').strip()
            img = self._view.grabFramebuffer().scaled(self._size,
                                                      Qt.IgnoreAspectRatio,
                                                      Qt.SmoothTransformation)
            pixmap = QPixmap.fromImage(img)
            self.thumbnailCreated.emit(pixmap)

        QTimer.singleShot(1000, func)