Highlight starred changes in list
Leave a space for flags immediately to the left of the subject in change lists. If the change is starred, place an asterisk there and highlight the row. Also permit toggling whether a change is starred from within the list. Change-Id: I221efa72921adf980db07f93ad1264e8ec1db7b1
This commit is contained in:
parent
c5472b2e1c
commit
7e85ed3745
@ -79,6 +79,8 @@ DEFAULT_PALETTE={
|
|||||||
'reviewed-change': ['dark gray', ''],
|
'reviewed-change': ['dark gray', ''],
|
||||||
'focused-unreviewed-change': ['default,standout', ''],
|
'focused-unreviewed-change': ['default,standout', ''],
|
||||||
'focused-reviewed-change': ['dark gray,standout', ''],
|
'focused-reviewed-change': ['dark gray,standout', ''],
|
||||||
|
'starred-change': ['light cyan', ''],
|
||||||
|
'focused-starred-change': ['light cyan,standout', ''],
|
||||||
}
|
}
|
||||||
|
|
||||||
# A delta from the default palette
|
# A delta from the default palette
|
||||||
|
@ -51,6 +51,7 @@ class ChangeRow(urwid.Button):
|
|||||||
change_focus_map = {None: 'focused',
|
change_focus_map = {None: 'focused',
|
||||||
'unreviewed-change': 'focused-unreviewed-change',
|
'unreviewed-change': 'focused-unreviewed-change',
|
||||||
'reviewed-change': 'focused-reviewed-change',
|
'reviewed-change': 'focused-reviewed-change',
|
||||||
|
'starred-change': 'focused-starred-change',
|
||||||
'positive-label': 'focused-positive-label',
|
'positive-label': 'focused-positive-label',
|
||||||
'negative-label': 'focused-negative-label',
|
'negative-label': 'focused-negative-label',
|
||||||
'min-label': 'focused-min-label',
|
'min-label': 'focused-min-label',
|
||||||
@ -88,11 +89,17 @@ class ChangeRow(urwid.Button):
|
|||||||
style = 'reviewed-change'
|
style = 'reviewed-change'
|
||||||
else:
|
else:
|
||||||
style = 'unreviewed-change'
|
style = 'unreviewed-change'
|
||||||
self.row_style.set_attr_map({None: style})
|
|
||||||
if hasattr(change, '_subject'):
|
if hasattr(change, '_subject'):
|
||||||
subject = change._subject
|
subject = change._subject
|
||||||
else:
|
else:
|
||||||
subject = change.subject
|
subject = change.subject
|
||||||
|
flag = ' '
|
||||||
|
color = None
|
||||||
|
if change.starred:
|
||||||
|
flag = '*'
|
||||||
|
style = 'starred-change'
|
||||||
|
subject = flag + subject
|
||||||
|
self.row_style.set_attr_map({None: style})
|
||||||
self.subject.set_text(subject)
|
self.subject.set_text(subject)
|
||||||
self.number.set_text(str(change.number))
|
self.number.set_text(str(change.number))
|
||||||
self.project.set_text(change.project.name.split('/')[-1])
|
self.project.set_text(change.project.name.split('/')[-1])
|
||||||
@ -125,7 +132,7 @@ class ChangeRow(urwid.Button):
|
|||||||
|
|
||||||
class ChangeListHeader(urwid.WidgetWrap):
|
class ChangeListHeader(urwid.WidgetWrap):
|
||||||
def __init__(self, project=False, owner=False, updated=False):
|
def __init__(self, project=False, owner=False, updated=False):
|
||||||
cols = [(6, urwid.Text(u'Number')), ('weight', 4, urwid.Text(u'Subject'))]
|
cols = [(6, urwid.Text(u'Number')), ('weight', 4, urwid.Text(u' Subject'))]
|
||||||
if project:
|
if project:
|
||||||
cols.append(('weight', 1, urwid.Text(u'Project')))
|
cols.append(('weight', 1, urwid.Text(u'Project')))
|
||||||
if owner:
|
if owner:
|
||||||
@ -151,6 +158,8 @@ class ChangeListView(urwid.WidgetWrap):
|
|||||||
"Toggle whether only unreviewed or all changes are displayed"),
|
"Toggle whether only unreviewed or all changes are displayed"),
|
||||||
(key(keymap.TOGGLE_REVIEWED),
|
(key(keymap.TOGGLE_REVIEWED),
|
||||||
"Toggle the reviewed flag for the currently selected change"),
|
"Toggle the reviewed flag for the currently selected change"),
|
||||||
|
(key(keymap.TOGGLE_STARRED),
|
||||||
|
"Toggle the starred flag for the currently selected change"),
|
||||||
(key(keymap.REFRESH),
|
(key(keymap.REFRESH),
|
||||||
"Sync all projects"),
|
"Sync all projects"),
|
||||||
(key(keymap.SORT_BY_NUMBER),
|
(key(keymap.SORT_BY_NUMBER),
|
||||||
@ -349,6 +358,16 @@ class ChangeListView(urwid.WidgetWrap):
|
|||||||
self.log.debug("Set change %s to %s", change_key, reviewed_str)
|
self.log.debug("Set change %s to %s", change_key, reviewed_str)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def toggleStarred(self, change_key):
|
||||||
|
with self.app.db.getSession() as session:
|
||||||
|
change = session.getChange(change_key)
|
||||||
|
change.starred = not change.starred
|
||||||
|
ret = change.starred
|
||||||
|
change.pending_starred = True
|
||||||
|
self.app.sync.submitTask(
|
||||||
|
sync.ChangeStarredTask(change_key, sync.HIGH_PRIORITY))
|
||||||
|
return ret
|
||||||
|
|
||||||
def toggleHidden(self, change_key):
|
def toggleHidden(self, change_key):
|
||||||
with self.app.db.getSession() as session:
|
with self.app.db.getSession() as session:
|
||||||
change = session.getChange(change_key)
|
change = session.getChange(change_key)
|
||||||
@ -401,6 +420,17 @@ class ChangeListView(urwid.WidgetWrap):
|
|||||||
# where we're not just popping a row from the list of changes.
|
# where we're not just popping a row from the list of changes.
|
||||||
self.refresh()
|
self.refresh()
|
||||||
return None
|
return None
|
||||||
|
if keymap.TOGGLE_STARRED in commands:
|
||||||
|
if not len(self.listbox.body):
|
||||||
|
return None
|
||||||
|
pos = self.listbox.focus_position
|
||||||
|
change_key = self.listbox.body[pos].change_key
|
||||||
|
starred = self.toggleStarred(change_key)
|
||||||
|
row = self.change_rows[change_key]
|
||||||
|
with self.app.db.getSession() as session:
|
||||||
|
change = session.getChange(change_key)
|
||||||
|
row.update(change, self.categories)
|
||||||
|
return None
|
||||||
if keymap.REFRESH in commands:
|
if keymap.REFRESH in commands:
|
||||||
self.app.sync.submitTask(
|
self.app.sync.submitTask(
|
||||||
sync.SyncSubscribedProjectsTask(sync.HIGH_PRIORITY))
|
sync.SyncSubscribedProjectsTask(sync.HIGH_PRIORITY))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user