diff --git a/gertty/app.py b/gertty/app.py index 2b2d11e..2c71631 100644 --- a/gertty/app.py +++ b/gertty/app.py @@ -146,10 +146,11 @@ class App(object): self.popup(dialog) - def changeScreen(self, widget): + def changeScreen(self, widget, push=True): self.log.debug("Changing screen to %s" % (widget,)) self.status.update(title=widget.title) - self.screens.append(self.loop.widget) + if push: + self.screens.append(self.loop.widget) self.loop.widget = widget def backScreen(self, target_widget=None): diff --git a/gertty/view/change.py b/gertty/view/change.py index 61a35d9..ac7ec88 100644 --- a/gertty/view/change.py +++ b/gertty/view/change.py @@ -274,6 +274,8 @@ class ChangeView(urwid.WidgetWrap): Checkout the most recent revision into the local repo. Show the diff of the mont recent revision. Toggle the hidden flag for the current change. + Go to the next change in the list. +

Go to the previous change in the list. Leave a review for the most recent revision. Back to the list of changes. Toggle the reviewed flag for the current change. @@ -571,6 +573,19 @@ class ChangeView(urwid.WidgetWrap): widget = self.app.findChangeList() self.app.backScreen(widget) return None + if r in ['n', 'p']: + widget = self.app.findChangeList() + if r == 'n': + new_change_key = widget.getNextChangeKey(self.change_key) + else: + new_change_key = widget.getPrevChangeKey(self.change_key) + if new_change_key: + try: + view = ChangeView(self.app, new_change_key) + self.app.changeScreen(view, push=False) + except gertty.view.DisplayError as e: + self.app.error(e.message) + return None if r == 'ctrl r': self.app.sync.submitTask( sync.SyncChangeTask(self.change_rest_id, priority=sync.HIGH_PRIORITY)) diff --git a/gertty/view/change_list.py b/gertty/view/change_list.py index be9b71a..5b3bf6f 100644 --- a/gertty/view/change_list.py +++ b/gertty/view/change_list.py @@ -121,6 +121,22 @@ class ChangeListView(urwid.WidgetWrap): self.listbox.body.remove(row) del self.change_rows[key] + def getNextChangeKey(self, change_key): + row = self.change_rows.get(change_key) + i = self.listbox.body.index(row) + if i+1 >= len(self.listbox.body): + return None + row = self.listbox.body[i+1] + return row.change_key + + def getPrevChangeKey(self, change_key): + row = self.change_rows.get(change_key) + i = self.listbox.body.index(row) + if i <= 0: + return None + row = self.listbox.body[i-1] + return row.change_key + def toggleReviewed(self, change_key): with self.app.db.getSession() as session: change = session.getChange(change_key)