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'] searchrunner = self.registry['searchrunner']
messagebridge = self.registry['messagebridge'] messagebridge = self.registry['messagebridge']
modeman = self.registry['modeman'] modeman = self.registry['modeman']
prompter = self.registry['prompter']
# misc # misc
self.lastWindowClosed.connect(self.shutdown) self.lastWindowClosed.connect(self.shutdown)
@ -388,7 +389,7 @@ class Application(QApplication):
modeman.entered.connect(status.on_mode_entered) modeman.entered.connect(status.on_mode_entered)
modeman.left.connect(status.on_mode_left) modeman.left.connect(status.on_mode_left)
modeman.left.connect(cmd.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 # commands
cmd.got_cmd.connect(self._commandrunner.run_safely) 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_set_text.connect(status.set_text)
messagebridge.s_maybe_reset_text.connect(status.txt.maybe_reset_text) messagebridge.s_maybe_reset_text.connect(status.txt.maybe_reset_text)
messagebridge.s_set_cmd_text.connect(cmd.set_cmd_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) Qt.DirectConnection)
# config # config
@ -730,7 +731,7 @@ class Application(QApplication):
return return
self._shutting_down = True self._shutting_down = True
log.destroy.debug("Shutting down with status {}...".format(status)) 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 # 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 # a still sub-eventloop (which gets quitted now) and not in the
# main one. # main one.

View File

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

View File

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