summaryrefslogtreecommitdiff
path: root/alot/ui.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2018-07-18 13:32:13 -0700
committerDylan Baker <dylan@pnwbakers.com>2018-07-26 10:36:16 -0700
commit603b4d8ea381f971a840ce099741786ebcaa3b2a (patch)
tree03beca863e89e1badf5aaf1edf6b8de352a397ec /alot/ui.py
parent781d0a824d5c08277ac73093a4846bd4f6dd2ff6 (diff)
ui: switch ui.prompt and ui.choice to use asyncio.Futures
asyncio's Futures are much like twisted's Deferreds, they represent a value that is not yet available, and they can be awaited like a coroutine. For the moment we still need to return a deferred because the twisted eventloop doesn't use Futures, it uses Deferreds; once we can remove twisted's eventloop we can remove the conversion from a Future to a deferred.
Diffstat (limited to 'alot/ui.py')
-rw-r--r--alot/ui.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/alot/ui.py b/alot/ui.py
index cf7574f0..f8fb7ecc 100644
--- a/alot/ui.py
+++ b/alot/ui.py
@@ -327,7 +327,7 @@ class UI(object):
"""
history = history or []
- d = defer.Deferred() # create return deferred
+ fut = asyncio.Future()
oldroot = self.mainloop.widget
def select_or_cancel(text):
@@ -335,7 +335,7 @@ class UI(object):
with the given text."""
self.mainloop.widget = oldroot
self._passall = False
- d.callback(text)
+ fut.set_result(text)
def cerror(e):
logging.error(e)
@@ -371,7 +371,7 @@ class UI(object):
None)
self.mainloop.widget = overlay
self._passall = True
- return d # return deferred
+ return defer.Deferred.fromFuture(fut)
@staticmethod
def exit():
@@ -556,7 +556,7 @@ class UI(object):
assert cancel is None or cancel in choices.values()
assert msg_position in ['left', 'above']
- d = defer.Deferred() # create return deferred
+ fut = asyncio.Future() # Create a returned future
oldroot = self.mainloop.widget
def select_or_cancel(text):
@@ -564,7 +564,7 @@ class UI(object):
with the given text."""
self.mainloop.widget = oldroot
self._passall = False
- d.callback(text)
+ fut.set_result(text)
# set up widgets
msgpart = urwid.Text(message)
@@ -593,7 +593,7 @@ class UI(object):
None)
self.mainloop.widget = overlay
self._passall = True
- return d # return deferred
+ return defer.Deferred.fromFuture(fut)
def notify(self, message, priority='normal', timeout=0, block=False):
"""