Merge "Display a message when interactively syncing"
This commit is contained in:
commit
47afa4669c
@ -398,11 +398,16 @@ class App(object):
|
|||||||
|
|
||||||
def popup(self, widget,
|
def popup(self, widget,
|
||||||
relative_width=50, relative_height=25,
|
relative_width=50, relative_height=25,
|
||||||
min_width=20, min_height=8):
|
min_width=20, min_height=8,
|
||||||
|
width=None, height=None):
|
||||||
self.clearInputBuffer()
|
self.clearInputBuffer()
|
||||||
|
if width is None:
|
||||||
|
width = ('relative', relative_width)
|
||||||
|
if height is None:
|
||||||
|
height = ('relative', relative_height)
|
||||||
overlay = urwid.Overlay(widget, self.loop.widget,
|
overlay = urwid.Overlay(widget, self.loop.widget,
|
||||||
'center', ('relative', relative_width),
|
'center', width,
|
||||||
'middle', ('relative', relative_height),
|
'middle', height,
|
||||||
min_width=min_width, min_height=min_height)
|
min_width=min_width, min_height=min_height)
|
||||||
self.log.debug("Overlaying %s on screen %s" % (widget, self.loop.widget))
|
self.log.debug("Overlaying %s on screen %s" % (widget, self.loop.widget))
|
||||||
self.screens.append(self.loop.widget)
|
self.screens.append(self.loop.widget)
|
||||||
@ -464,6 +469,10 @@ class App(object):
|
|||||||
if change_key is None:
|
if change_key is None:
|
||||||
if self.sync.offline:
|
if self.sync.offline:
|
||||||
raise Exception('Can not sync change while offline.')
|
raise Exception('Can not sync change while offline.')
|
||||||
|
dialog = mywid.SystemMessage("Syncing change...")
|
||||||
|
self.popup(dialog, width=40, height=6)
|
||||||
|
self.loop.draw_screen()
|
||||||
|
try:
|
||||||
task = sync.SyncChangeByNumberTask(number or changeid, sync.HIGH_PRIORITY)
|
task = sync.SyncChangeByNumberTask(number or changeid, sync.HIGH_PRIORITY)
|
||||||
self.sync.submitTask(task)
|
self.sync.submitTask(task)
|
||||||
succeeded = task.wait(300)
|
succeeded = task.wait(300)
|
||||||
@ -473,6 +482,9 @@ class App(object):
|
|||||||
succeeded = subtask.wait(300)
|
succeeded = subtask.wait(300)
|
||||||
if not succeeded:
|
if not succeeded:
|
||||||
raise Exception('Unable to sync change.')
|
raise Exception('Unable to sync change.')
|
||||||
|
finally:
|
||||||
|
# Remove "syncing..." popup
|
||||||
|
self.backScreen()
|
||||||
with self.db.getSession() as session:
|
with self.db.getSession() as session:
|
||||||
if number:
|
if number:
|
||||||
change = session.getChangeByNumber(number)
|
change = session.getChangeByNumber(number)
|
||||||
|
@ -128,6 +128,11 @@ class MyEdit(urwid.Edit):
|
|||||||
self.ring.kill(text)
|
self.ring.kill(text)
|
||||||
return super(MyEdit, self).keypress(size, key)
|
return super(MyEdit, self).keypress(size, key)
|
||||||
|
|
||||||
|
class SystemMessage(urwid.WidgetWrap):
|
||||||
|
def __init__(self, message):
|
||||||
|
w = urwid.Filler(urwid.Text(message, align='center'))
|
||||||
|
super(SystemMessage, self).__init__(urwid.LineBox(w))
|
||||||
|
|
||||||
@mouse_scroll_decorator.ScrollByWheel
|
@mouse_scroll_decorator.ScrollByWheel
|
||||||
class ButtonDialog(urwid.WidgetWrap):
|
class ButtonDialog(urwid.WidgetWrap):
|
||||||
def __init__(self, title, message, entry_prompt=None,
|
def __init__(self, title, message, entry_prompt=None,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user