This commit is contained in:
Florian Bruhin 2014-09-28 22:23:37 +02:00
parent fb6cb62f93
commit dc7b32e460
9 changed files with 24 additions and 22 deletions

View File

@ -32,19 +32,18 @@ import functools
import traceback
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.QtCore import (pyqtSlot, QTimer, QEventLoop, Qt, QStandardPaths,
from PyQt5.QtCore import (pyqtSlot, QTimer, QEventLoop, QStandardPaths,
qInstallMessageHandler, QObject, QUrl)
import qutebrowser
from qutebrowser.commands import runners, cmdutils
from qutebrowser.commands import cmdutils
from qutebrowser.config import style, config, websettings
from qutebrowser.network import qutescheme, proxy
from qutebrowser.browser import quickmarks, cookies, downloads, cache
from qutebrowser.widgets import mainwindow, console, crash
from qutebrowser.keyinput import modeman
from qutebrowser.utils import (log, version, message, utilcmds, readline,
utils, qtutils, urlutils, debug, objreg,
usertypes)
from qutebrowser.utils import (log, version, message, readline, utils, qtutils,
urlutils, debug, objreg, usertypes)
class Application(QApplication):

View File

@ -836,17 +836,17 @@ class CommandDispatcher:
try:
timer.setInterval(ms)
except OverflowError:
raise cmdexc.CommandError("Numeric argument is too large for internal "
"int representation.")
raise cmdexc.CommandError("Numeric argument is too large for "
"internal int representation.")
self._timers.append(timer)
cmdline = ' '.join(command)
commandrunner = objreg.get('command-runner', scope='window',
window=self._win_id)
timer.timeout.connect(functools.partial(commandrunner.run_safely, cmdline))
timer.timeout.connect(
functools.partial(commandrunner.run_safely, cmdline))
timer.timeout.connect(lambda: self._timers.remove(timer))
timer.start()
@cmdutils.register(instance='command-dispatcher',
modes=[usertypes.KeyMode.insert],
hide=True, scope='window')
@ -874,7 +874,7 @@ class CommandDispatcher:
else:
text = elem.evaluateJavaScript('this.value')
self._editor = editor.ExternalEditor(
win_id, self._tabbed_browser())
self._win_id, self._tabbed_browser())
self._editor.editing_finished.connect(
functools.partial(self.on_editing_finished, elem))
self._editor.edit(text)

View File

@ -31,7 +31,6 @@ from qutebrowser.config import config
from qutebrowser.commands import cmdexc, cmdutils
from qutebrowser.utils import (message, http, usertypes, log, utils, qtutils,
objreg)
from qutebrowser.widgets import mainwindow
class DownloadItem(QObject):

View File

@ -367,7 +367,7 @@ class HintManager(QObject):
qtutils.ensure_valid(url)
cmd = self._context.args[0]
args = self._context.args[1:]
userscripts.run(cmd, *args, url=url)
userscripts.run(cmd, *args, url=url, win_id=self._win_id)
def _spawn(self, url):
"""Spawn a simple command from a hint."""

View File

@ -343,5 +343,5 @@ def run(cmd, *args, url, win_id):
_runners.append(runner)
_commandrunners.append(commandrunner)
runner.finished.connect(functools.partial(_runners.remove, runner))
commandrunner.finished.connect(
runner.finished.connect(
functools.partial(_commandrunners.remove, commandrunner))

View File

@ -113,6 +113,7 @@ class EventFilter(QObject):
self._activated = True
def eventFilter(self, obj, event):
"""Forward events to the correct modeman."""
if not self._activated:
return False
try:

View File

@ -34,7 +34,8 @@ class SchemeHandler(QObject):
_win_id: The window ID this scheme handler is associated with.
"""
def __init__(self, win_id):
def __init__(self, win_id, parent=None):
super().__init__(parent)
self._win_id = win_id
def createRequest(self, op, request, outgoing_data):

View File

@ -20,8 +20,6 @@
"""Misc. utility commands exposed to the user."""
import types
import functools
from PyQt5.QtCore import QCoreApplication

View File

@ -40,8 +40,14 @@ win_id_gen = itertools.count(0)
def create_window():
"""Create a new main window.
Return:
The MainWindow object.
"""
win_id = next(win_id_gen)
win = MainWindow(win_id)
return win
class MainWindow(QWidget):
@ -170,14 +176,14 @@ class MainWindow(QWidget):
def _connect_signals(self):
"""Connect all mainwindow signals."""
# pylint: disable=too-many-locals,too-many-statements
app = objreg.get('app')
download_manager = objreg.get('download-manager')
key_config = objreg.get('key-config')
config_obj = objreg.get('config')
status = self._get_object('statusbar')
keyparsers = self._get_object('keyparsers')
completion = self._get_object('completion')
completion_obj = self._get_object('completion')
tabs = self._get_object('tabbed-browser')
cmd = self._get_object('status-command')
completer = self._get_object('completer')
@ -242,16 +248,14 @@ class MainWindow(QWidget):
# command input / completion
mode_manager.left.connect(tabs.on_mode_left)
cmd.clear_completion_selection.connect(
completion.on_clear_completion_selection)
cmd.hide_completion.connect(completion.hide)
completion_obj.on_clear_completion_selection)
cmd.hide_completion.connect(completion_obj.hide)
cmd.update_completion.connect(completer.on_update_completion)
completer.change_completed_part.connect(cmd.on_change_completed_part)
# downloads
tabs.start_download.connect(download_manager.fetch)
@pyqtSlot()
def resize_completion(self):
"""Adjust completion according to config."""