From 37ef05652d294ebe7fe8dbf3b5ddbde47429d9c2 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Sun, 24 Apr 2016 09:40:53 -0700 Subject: [PATCH] Use short titles in breadcrumbs When possible, try to shorten the screen title to the shortest length possible while still being descriptive enough to help the user navigate. Also, make the space for the ellipses available for use for titles that do not need them. Change-Id: I82e08ac60451e81c2e5a51f8595fb19234f23859 --- gertty/app.py | 6 ++++-- gertty/view/change_list.py | 4 ++++ gertty/view/project_list.py | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gertty/app.py b/gertty/app.py index 4227094..30ed840 100644 --- a/gertty/app.py +++ b/gertty/app.py @@ -148,9 +148,11 @@ class BreadCrumbBar(urwid.WidgetWrap): super(BreadCrumbBar, self).__init__(self.display_widget) def _get_breadcrumb_text(self, screen): - title = getattr(screen, 'title', str(screen)) + title = getattr(screen, 'short_title', None) + if not title: + title = getattr(screen, 'title', str(screen)) text = "%s %s" % (BreadCrumbBar.BREADCRUMB_SYMBOL, title) - if len(text) > 20: + if len(text) > 23: text = "%s..." % text[:20] return urwid.Text(text, wrap='clip') diff --git a/gertty/view/change_list.py b/gertty/view/change_list.py index db60663..b6418c2 100644 --- a/gertty/view/change_list.py +++ b/gertty/view/change_list.py @@ -256,6 +256,10 @@ class ChangeListView(urwid.WidgetWrap): self.title = u'Unreviewed changes in %s' % self.query_desc else: self.title = u'All changes in %s' % self.query_desc + self.short_title = self.query_desc + if '/' in self.short_title and ' ' not in self.short_title: + i = self.short_title.rfind('/') + self.short_title = self.short_title[i+1:] self.app.status.update(title=self.title) categories = set() for change in change_list: diff --git a/gertty/view/project_list.py b/gertty/view/project_list.py index ff8b3f1..d102fa3 100644 --- a/gertty/view/project_list.py +++ b/gertty/view/project_list.py @@ -315,10 +315,12 @@ class ProjectListView(urwid.WidgetWrap): def refresh(self): if self.subscribed: self.title = u'Subscribed projects' + self.short_title = self.title[:] if self.unreviewed: self.title += u' with unreviewed changes' else: self.title = u'All projects' + self.short_title = self.title[:] self.app.status.update(title=self.title) with self.app.db.getSession() as session: i = 0