Example #1
0
    def __init__(self, reply, manager):
        """Constructor.

        Args:
            reply: The QNetworkReply to download.
        """
        super().__init__(manager=manager, parent=manager)
        self.fileobj: Optional[IO[bytes]] = None
        self.raw_headers: Dict[bytes, bytes] = {}

        self._autoclose = True
        self._retry_info = None
        self._reply = None
        self._buffer = io.BytesIO()
        self._read_timer = usertypes.Timer(self, name='download-read-timer')
        self._read_timer.setInterval(500)
        self._read_timer.timeout.connect(self._on_read_timer_timeout)
        self._redirects = 0
        self._url = reply.url()
        self._init_reply(reply)
Example #2
0
    def _handle_ambiguous_match(self, binding, count):
        """Handle an ambiguous match.

        Args:
            binding: The command-string to execute.
            count: The count to pass.
        """
        self._debug_log("Ambiguous match for '{}'".format(self._keystring))
        time = config.get('input', 'timeout')
        if time == 0:
            # execute immediately
            self._keystring = ''
            self.execute(binding, self.Type.chain, count)
        else:
            # execute in `time' ms
            self._debug_log("Scheduling execution of {} in {}ms".format(
                binding, time))
            self._timer = usertypes.Timer(self, 'ambigious_match')
            self._timer.setSingleShot(True)
            self._timer.setInterval(time)
            self._timer.timeout.connect(
                functools.partial(self.delayed_exec, binding, count))
            self._timer.start()
Example #3
0
    def __init__(self, args, parent=None):
        """Start the IPC server and listen to commands.

        Args:
            args: The argparse namespace.
            parent: The parent to be used.
        """
        super().__init__(parent)
        self.ignored = False
        self._socketname = _get_socketname(args)
        self._remove_server()
        self._timer = usertypes.Timer(self, 'ipc-timeout')
        self._timer.setInterval(READ_TIMEOUT)
        self._timer.timeout.connect(self.on_timeout)
        self._server = QLocalServer(self)
        ok = self._server.listen(self._socketname)
        if not ok:
            if self._server.serverError() == QAbstractSocket.AddressInUseError:
                raise AddressInUseError(self._server)
            else:
                raise ListenError(self._server)
        self._server.newConnection.connect(self.handle_connection)
        self._socket = None
Example #4
0
    def __init__(self, reply, parent=None):
        """Constructor.

        Args:
            reply: The QNetworkReply to download.
        """
        super().__init__(parent)
        self._reply = reply
        self._bytes_total = None
        self._speed = 0
        self.error_msg = None
        self.basename = '???'
        samples = int(self.SPEED_AVG_WINDOW *
                      (1000 / self.SPEED_REFRESH_INTERVAL))
        self._speed_avg = collections.deque(maxlen=samples)
        self._fileobj = None
        self._filename = None
        self._is_cancelled = False
        self._do_delayed_write = False
        self._bytes_done = 0
        self._last_done = 0
        reply.setReadBufferSize(16 * 1024 * 1024)
        reply.downloadProgress.connect(self.on_download_progress)
        reply.finished.connect(self.on_reply_finished)
        reply.error.connect(self.on_reply_error)
        reply.readyRead.connect(self.on_ready_read)
        # We could have got signals before we connected slots to them.
        # Here no signals are connected to the DownloadItem yet, so we use a
        # singleShot QTimer to emit them after they are connected.
        if reply.error() != QNetworkReply.NoError:
            QTimer.singleShot(0, lambda: self.error.emit(reply.errorString()))
        if reply.isFinished():
            QTimer.singleShot(0, self.finished.emit)
        self.timer = usertypes.Timer(self, 'speed_refresh')
        self.timer.timeout.connect(self.update_speed)
        self.timer.setInterval(self.SPEED_REFRESH_INTERVAL)
        self.timer.start()
Example #5
0
 def __init__(self, parent=None):
     super().__init__(parent)
     self.downloads = []
     self._update_timer = usertypes.Timer(self, 'download-update')
     self._update_timer.timeout.connect(self._update_gui)
     self._update_timer.setInterval(_REFRESH_INTERVAL)
Example #6
0
 def __init__(self, parent=None):
     super().__init__(parent)
     self.saveables = collections.OrderedDict()
     self._save_timer = usertypes.Timer(self, name='save-timer')
     self._save_timer.timeout.connect(self.autosave)
def test_timeout_set_interval(qtbot):
    """Make sure the timer works with setInterval()."""
    t = usertypes.Timer()
    with qtbot.waitSignal(t.timeout, timeout=3000):
        t.setInterval(200)
        t.start()
def test_start_overflow():
    """Make sure start raises OverflowError with very big numbers."""
    t = usertypes.Timer()
    with pytest.raises(OverflowError):
        t.start(2**64)
def test_set_interval_overflow():
    """Make sure setInterval raises OverflowError with very big numbers."""
    t = usertypes.Timer()
    with pytest.raises(OverflowError):
        t.setInterval(2**64)
def test_unnamed():
    """Make sure an unnamed Timer is named correctly."""
    t = usertypes.Timer()
    assert not t.objectName()
    assert t._name == 'unnamed'
    assert repr(t) == "<qutebrowser.utils.usertypes.Timer name='unnamed'>"
def test_named():
    """Make sure the name is set correctly."""
    t = usertypes.Timer(name='foobar')
    assert t._name == 'foobar'
    assert t.objectName() == 'foobar'
    assert repr(t) == "<qutebrowser.utils.usertypes.Timer name='foobar'>"
def test_parent():
    """Make sure the parent is set correctly."""
    parent = Parent()
    t = usertypes.Timer(parent)
    assert t.parent() is parent
Example #13
0
    def __init__(self, win_id, parent=None):
        super().__init__(parent)
        objreg.register('statusbar', self, scope='window', window=win_id)
        self.setObjectName(self.__class__.__name__)
        self.setAttribute(Qt.WA_StyledBackground)
        style.set_register_stylesheet(self)

        self.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Fixed)

        self._win_id = win_id
        self._option = None
        self._stopwatch = QTime()

        self._hbox = QHBoxLayout(self)
        self.set_hbox_padding()
        objreg.get('config').changed.connect(self.set_hbox_padding)
        self._hbox.setSpacing(5)

        self._stack = QStackedLayout()
        self._hbox.addLayout(self._stack)
        self._stack.setContentsMargins(0, 0, 0, 0)

        self.cmd = command.Command(win_id)
        self._stack.addWidget(self.cmd)
        objreg.register('status-command',
                        self.cmd,
                        scope='window',
                        window=win_id)

        self.txt = textwidget.Text()
        self._stack.addWidget(self.txt)
        self._timer_was_active = False
        self._text_queue = collections.deque()
        self._text_pop_timer = usertypes.Timer(self, 'statusbar_text_pop')
        self._text_pop_timer.timeout.connect(self._pop_text)
        self.set_pop_timer_interval()
        objreg.get('config').changed.connect(self.set_pop_timer_interval)

        self.prompt = prompt.Prompt(win_id)
        self._stack.addWidget(self.prompt)
        self._previous_widget = PreviousWidget.none

        self.cmd.show_cmd.connect(self._show_cmd_widget)
        self.cmd.hide_cmd.connect(self._hide_cmd_widget)
        self._hide_cmd_widget()
        prompter = objreg.get('prompter', scope='window', window=self._win_id)
        prompter.show_prompt.connect(self._show_prompt_widget)
        prompter.hide_prompt.connect(self._hide_prompt_widget)
        self._hide_prompt_widget()

        self.keystring = keystring.KeyString()
        self._hbox.addWidget(self.keystring)

        self.url = url.UrlText()
        self._hbox.addWidget(self.url)

        self.percentage = percentage.Percentage()
        self._hbox.addWidget(self.percentage)

        self.tabindex = tabindex.TabIndex()
        self._hbox.addWidget(self.tabindex)

        # We add a parent to Progress here because it calls self.show() based
        # on some signals, and if that happens before it's added to the layout,
        # it will quickly blink up as independent window.
        self.prog = progress.Progress(self)
        self._hbox.addWidget(self.prog)

        objreg.get('config').changed.connect(self.maybe_hide)
        QTimer.singleShot(0, self.maybe_hide)
Example #14
0
 def __init__(self, win_id, parent=None):
     super().__init__(win_id, parent, supports_count=True,
                      supports_chains=True)
     self.read_config('normal')
     self._partial_timer = usertypes.Timer(self, 'partial-match')
     self._partial_timer.setSingleShot(True)
Example #15
0
 def __init__(self, parent=None):
     super().__init__(parent)
     self.downloads = []  # type: typing.Sequence[AbstractDownloadItem]
     self._update_timer = usertypes.Timer(self, 'download-update')
     self._update_timer.timeout.connect(self._update_gui)
     self._update_timer.setInterval(_REFRESH_INTERVAL)
Example #16
0
def test_timeout_start(qtbot):
    """Make sure the timer works with start()."""
    t = usertypes.Timer()
    with qtbot.waitSignal(t.timeout, timeout=3000, raising=True):
        t.start(200)