Use object registry for prompter.

This commit is contained in:
Florian Bruhin 2014-09-23 21:54:11 +02:00
parent ffaf4f0cb0
commit 487300f926
3 changed files with 11 additions and 9 deletions

View File

@ -379,6 +379,7 @@ class Application(QApplication):
searchrunner = self.registry['searchrunner']
messagebridge = self.registry['messagebridge']
modeman = self.registry['modeman']
prompter = self.registry['prompter']
# misc
self.lastWindowClosed.connect(self.shutdown)
@ -388,7 +389,7 @@ class Application(QApplication):
modeman.entered.connect(status.on_mode_entered)
modeman.left.connect(status.on_mode_left)
modeman.left.connect(cmd.on_mode_left)
modeman.left.connect(status.prompt.prompter.on_mode_left)
modeman.left.connect(prompter.on_mode_left)
# commands
cmd.got_cmd.connect(self._commandrunner.run_safely)
@ -413,7 +414,7 @@ class Application(QApplication):
messagebridge.s_set_text.connect(status.set_text)
messagebridge.s_maybe_reset_text.connect(status.txt.maybe_reset_text)
messagebridge.s_set_cmd_text.connect(cmd.set_cmd_text)
messagebridge.s_question.connect(status.prompt.prompter.ask_question,
messagebridge.s_question.connect(prompter.ask_question,
Qt.DirectConnection)
# config
@ -730,7 +731,7 @@ class Application(QApplication):
return
self._shutting_down = True
log.destroy.debug("Shutting down with status {}...".format(status))
if self.mainwindow.status.prompt.prompter.shutdown():
if self.registry['prompter'].shutdown():
# If shutdown was called while we were asking a question, we're in
# a still sub-eventloop (which gets quitted now) and not in the
# main one.

View File

@ -24,6 +24,7 @@ from PyQt5.QtWidgets import QHBoxLayout, QWidget, QLineEdit
from qutebrowser.widgets import misc
from qutebrowser.widgets.statusbar import textbase, prompter
from qutebrowser.utils import utils
class PromptLineEdit(misc.MinimalLineEditMixin, QLineEdit):
@ -40,7 +41,6 @@ class Prompt(QWidget):
"""The prompt widget shown in the statusbar.
Attributes:
prompter: The Prompter instance assosciated with this Prompt.
txt: The TextBase instance (QLabel) used to display the prompt text.
lineedit: The MinimalLineEdit instance (QLineEdit) used for the input.
_hbox: The QHBoxLayout used to display the text and prompt.
@ -65,7 +65,8 @@ class Prompt(QWidget):
self.lineedit = PromptLineEdit()
self._hbox.addWidget(self.lineedit)
self.prompter = prompter.Prompter(self)
prompter_obj = prompter.Prompter(self)
utils.register_object('prompter', prompter_obj)
def __repr__(self):
return '<{}>'.format(self.__class__.__name__)

View File

@ -26,7 +26,7 @@ from PyQt5.QtWidgets import QLineEdit
from qutebrowser.keyinput import modeman
from qutebrowser.commands import cmdutils
from qutebrowser.utils import usertypes, log, qtutils
from qutebrowser.utils import usertypes, log, qtutils, utils
PromptContext = collections.namedtuple('PromptContext',
@ -185,7 +185,7 @@ class Prompter:
if self.question.answer is None and not self.question.is_aborted:
self.question.cancel()
@cmdutils.register(instance='mainwindow.status.prompt.prompter', hide=True,
@cmdutils.register(instance='prompter', hide=True,
modes=[usertypes.KeyMode.prompt,
usertypes.KeyMode.yesno])
def prompt_accept(self):
@ -227,7 +227,7 @@ class Prompter:
else:
raise ValueError("Invalid question mode!")
@cmdutils.register(instance='mainwindow.status.prompt.prompter', hide=True,
@cmdutils.register(instance='prompter', hide=True,
modes=[usertypes.KeyMode.yesno])
def prompt_yes(self):
"""Answer yes to a yes/no prompt."""
@ -238,7 +238,7 @@ class Prompter:
modeman.leave(usertypes.KeyMode.yesno, 'yesno accept')
self.question.done()
@cmdutils.register(instance='mainwindow.status.prompt.prompter', hide=True,
@cmdutils.register(instance='prompter', hide=True,
modes=[usertypes.KeyMode.yesno])
def prompt_no(self):
"""Answer no to a yes/no prompt."""