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)
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()
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
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()
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)
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
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)
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)
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)
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)