Merge "Always refresh the screen on pop"

This commit is contained in:
Jenkins 2015-01-16 00:31:05 +00:00 committed by Gerrit Code Review
commit bfb5deff32
5 changed files with 51 additions and 37 deletions

View File

@ -212,7 +212,7 @@ class App(object):
if hasattr(widget, 'title'):
self.status.update(title=widget.title)
self.loop.widget = widget
self.refresh()
self.refresh(force=True)
def findChangeList(self):
for widget in reversed(self.screens):
@ -226,17 +226,21 @@ class App(object):
widget = self.screens.pop()
self.loop.widget = widget
def refresh(self, data=None):
def refresh(self, data=None, force=False):
self.status.refresh()
widget = self.loop.widget
while isinstance(widget, urwid.Overlay):
widget = widget.contents[0][0]
interested = force
try:
while True:
event = self.sync.result_queue.get(0)
widget.refresh(event)
if widget.interested(event):
interested = True
except Queue.Empty:
pass
if interested:
widget.refresh()
def popup(self, widget,
relative_width=50, relative_height=25,

View File

@ -524,15 +524,18 @@ class ChangeView(urwid.WidgetWrap):
if not succeeded:
raise gertty.view.DisplayError("Git commits not present in local repository")
def refresh(self, event=None):
if event and not ((isinstance(event, sync.ChangeAddedEvent) and
self.change_key in event.related_change_keys)
or
(isinstance(event, sync.ChangeUpdatedEvent) and
self.change_key in event.related_change_keys)):
def interested(self, event):
if not ((isinstance(event, sync.ChangeAddedEvent) and
self.change_key in event.related_change_keys)
or
(isinstance(event, sync.ChangeUpdatedEvent) and
self.change_key in event.related_change_keys)):
self.log.debug("Ignoring refresh change due to event %s" % (event,))
return
return False
self.log.debug("Refreshing change due to event %s" % (event,))
return True
def refresh(self):
change_info = []
with self.app.db.getSession() as session:
change = session.getChange(self.change_key)

View File

@ -142,20 +142,22 @@ class ChangeListView(urwid.WidgetWrap):
self._w.contents.append((self.listbox, ('weight', 1)))
self._w.set_focus(3)
def refresh(self, event=None):
if event and not ((self.project_key is not None and
isinstance(event, sync.ChangeAddedEvent) and
self.project_key == event.project_key)
or
(self.project_key is None and
isinstance(event, sync.ChangeAddedEvent))
or
(isinstance(event, sync.ChangeUpdatedEvent) and
event.change_key in self.change_rows.keys())):
def interested(self, event):
if not ((self.project_key is not None and
isinstance(event, sync.ChangeAddedEvent) and
self.project_key == event.project_key)
or
(self.project_key is None and
isinstance(event, sync.ChangeAddedEvent))
or
(isinstance(event, sync.ChangeUpdatedEvent) and
event.change_key in self.change_rows.keys())):
self.log.debug("Ignoring refresh change list due to event %s" % (event,))
return
return False
self.log.debug("Refreshing change list due to event %s" % (event,))
return True
def refresh(self):
unseen_keys = set(self.change_rows.keys())
with self.app.db.getSession() as session:
lst = session.getChanges(self.query, self.unreviewed,

View File

@ -341,17 +341,20 @@ class BaseDiffView(urwid.WidgetWrap):
def makeFileHeader(self, diff, comment_lists):
raise NotImplementedError
def refresh(self, event=None):
if event and not ((isinstance(event, sync.ChangeAddedEvent) and
self.change_key in event.related_change_keys)
or
(isinstance(event, sync.ChangeUpdatedEvent) and
self.change_key in event.related_change_keys)):
def interested(self, event):
if not ((isinstance(event, sync.ChangeAddedEvent) and
self.change_key in event.related_change_keys)
or
(isinstance(event, sync.ChangeUpdatedEvent) and
self.change_key in event.related_change_keys)):
#self.log.debug("Ignoring refresh diff due to event %s" % (event,))
return
return False
#self.log.debug("Refreshing diff due to event %s" % (event,))
return True
def refresh(self, event=None):
#TODO
return
pass
def keypress(self, size, key):
old_focus = self.listbox.focus

View File

@ -97,17 +97,19 @@ class ProjectListView(urwid.WidgetWrap):
self._w.contents.append((self.listbox, ('weight', 1)))
self._w.set_focus(3)
def refresh(self, event=None):
if event and not (isinstance(event, sync.ProjectAddedEvent)
or
isinstance(event, sync.ChangeAddedEvent)
or
(isinstance(event, sync.ChangeUpdatedEvent) and
(event.status_changed or event.review_flag_changed))):
def interested(self, event):
if not (isinstance(event, sync.ProjectAddedEvent)
or
isinstance(event, sync.ChangeAddedEvent)
or
(isinstance(event, sync.ChangeUpdatedEvent) and
(event.status_changed or event.review_flag_changed))):
self.log.debug("Ignoring refresh project list due to event %s" % (event,))
return
return False
self.log.debug("Refreshing project list due to event %s" % (event,))
return True
def refresh(self):
if self.subscribed:
self.title = u'Subscribed projects'
if self.unreviewed: