Prompt comment cleanup
This commit is contained in:
parent
5c84616ff4
commit
a466b672b3
@ -41,6 +41,24 @@ class Prompt(QWidget):
|
|||||||
|
|
||||||
"""The prompt widget shown in the statusbar.
|
"""The prompt widget shown in the statusbar.
|
||||||
|
|
||||||
|
The way in which multiple questions are handled deserves some explanation.
|
||||||
|
|
||||||
|
If a question is blocking, we *need* to ask it immediately, and can't wait
|
||||||
|
for previous questions to finish. We could theoretically ask a blocking
|
||||||
|
question inside of another blocking one, so in ask_question we simply save
|
||||||
|
the current prompt state on the stack, let the user answer the *most
|
||||||
|
recent* question, and then restore the previous state.
|
||||||
|
|
||||||
|
With a non-blocking question, things are a bit easier. We simply add it to
|
||||||
|
self._queue if we're still busy handling another question, since it can be
|
||||||
|
answered at any time.
|
||||||
|
|
||||||
|
In either case, as soon as we finished handling a question, we call
|
||||||
|
_pop_later() which schedules a _pop to ask the next question in _queue. We
|
||||||
|
schedule it rather than doing it immediately because then the order of how
|
||||||
|
things happen is clear, e.g. on_mode_left can't happen after we already set
|
||||||
|
up the *new* question.
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
question: A Question object with the question to be asked to the user.
|
question: A Question object with the question to be asked to the user.
|
||||||
_loops: A list of local EventLoops to spin in when blocking.
|
_loops: A list of local EventLoops to spin in when blocking.
|
||||||
@ -124,6 +142,9 @@ class Prompt(QWidget):
|
|||||||
|
|
||||||
Return:
|
Return:
|
||||||
The mode which should be entered.
|
The mode which should be entered.
|
||||||
|
|
||||||
|
Raise:
|
||||||
|
ValueError if the set PromptMode is invalid.
|
||||||
"""
|
"""
|
||||||
if self.question.mode == PromptMode.yesno:
|
if self.question.mode == PromptMode.yesno:
|
||||||
if self.question.default is None:
|
if self.question.default is None:
|
||||||
@ -236,14 +257,11 @@ class Prompt(QWidget):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
question: The Question object to ask.
|
question: The Question object to ask.
|
||||||
blocking: If True, _spin is called and the result is returned.
|
blocking: If True, this function blocks and returns the result.
|
||||||
|
|
||||||
Return:
|
Return:
|
||||||
The answer of the user when blocking=True.
|
The answer of the user when blocking=True.
|
||||||
None if blocking=False.
|
None if blocking=False.
|
||||||
|
|
||||||
Raise:
|
|
||||||
ValueError if the set PromptMode is invalid.
|
|
||||||
"""
|
"""
|
||||||
logger.debug("Asking question {}, blocking {}, loops {}, queue "
|
logger.debug("Asking question {}, blocking {}, loops {}, queue "
|
||||||
"{}".format(question, blocking, self._loops, self._queue))
|
"{}".format(question, blocking, self._loops, self._queue))
|
||||||
@ -251,7 +269,7 @@ class Prompt(QWidget):
|
|||||||
if self._busy and not blocking:
|
if self._busy and not blocking:
|
||||||
# We got an async question, but we're already busy with one, so we
|
# We got an async question, but we're already busy with one, so we
|
||||||
# just queue it up for later.
|
# just queue it up for later.
|
||||||
logger.debug("Adding to queue")
|
logger.debug("Adding {} to queue.".format(question))
|
||||||
self._queue.append(question)
|
self._queue.append(question)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user