def __init__(self, title, topics): button_widgets = [] ok_button = mywid.FixedButton('OK') cancel_button = mywid.FixedButton('Cancel') urwid.connect_signal(ok_button, 'click', lambda button: self._emit('ok')) urwid.connect_signal(cancel_button, 'click', lambda button: self._emit('cancel')) button_widgets.append(('pack', ok_button)) button_widgets.append(('pack', cancel_button)) button_columns = urwid.Columns(button_widgets, dividechars=2) self.topic_buttons = [] self.topic_keys = {} rows = [] for key, name in topics: button = mywid.FixedRadioButton(self.topic_buttons, name) self.topic_keys[button] = key rows.append(button) rows.append(urwid.Divider()) rows.append(button_columns) pile = urwid.Pile(rows) fill = urwid.Filler(pile, valign='top') super(TopicSelectDialog, self).__init__(urwid.LineBox(fill, title))
def __init__(self, change): save_button = mywid.FixedButton('Propose Change') cancel_button = mywid.FixedButton('Cancel') urwid.connect_signal(save_button, 'click', lambda button: self._emit('save')) urwid.connect_signal(cancel_button, 'click', lambda button: self._emit('cancel')) button_widgets = [('pack', save_button), ('pack', cancel_button)] button_columns = urwid.Columns(button_widgets, dividechars=2) rows = [] self.entry = urwid.Edit(edit_text=change.revisions[-1].message, multiline=True) self.branch_buttons = [] rows.append(urwid.Text(u"Branch:")) for branch in change.project.branches: b = mywid.FixedRadioButton(self.branch_buttons, branch.name, state=(branch.name == change.branch)) rows.append(b) rows.append(urwid.Divider()) rows.append(urwid.Text(u"Commit message:")) rows.append(self.entry) rows.append(urwid.Divider()) rows.append(button_columns) pile = urwid.Pile(rows) fill = urwid.Filler(pile, valign='top') super(CherryPickDialog, self).__init__(urwid.LineBox(fill, 'Propose Change to Branch'))
def __init__(self, app): self.app = app search_button = mywid.FixedButton('Search') cancel_button = mywid.FixedButton('Cancel') urwid.connect_signal(search_button, 'click', lambda button: self._emit('search')) urwid.connect_signal(cancel_button, 'click', lambda button: self._emit('cancel')) super(SearchDialog, self).__init__("Search", "Enter a change number or search string.", entry_prompt="Search: ", buttons=[search_button, cancel_button])
def __init__(self, app, topic): self.app = app save_button = mywid.FixedButton('Save') cancel_button = mywid.FixedButton('Cancel') urwid.connect_signal(save_button, 'click', lambda button: self._emit('save')) urwid.connect_signal(cancel_button, 'click', lambda button: self._emit('cancel')) super(EditTopicDialog, self).__init__("Edit Topic", "Edit the change topic.", entry_prompt="Topic: ", entry_text=topic, buttons=[save_button, cancel_button])
def __init__(self, patchsets, old, new): button_widgets = [] ok_button = mywid.FixedButton('OK') cancel_button = mywid.FixedButton('Cancel') urwid.connect_signal(ok_button, 'click', lambda button: self._emit('ok')) urwid.connect_signal(cancel_button, 'click', lambda button: self._emit('cancel')) button_widgets.append(('pack', ok_button)) button_widgets.append(('pack', cancel_button)) button_columns = urwid.Columns(button_widgets, dividechars=2) left = [] right = [] left.append(urwid.Text('Old')) right.append(urwid.Text('New')) self.old_buttons = [] self.new_buttons = [] self.patchset_keys = {} oldb = mywid.FixedRadioButton(self.old_buttons, 'Base', state=(old == None)) left.append(oldb) right.append(urwid.Text('')) self.patchset_keys[oldb] = None for key, num in patchsets: oldb = mywid.FixedRadioButton(self.old_buttons, 'Patchset %d' % num, state=(old == key)) newb = mywid.FixedRadioButton(self.new_buttons, 'Patchset %d' % num, state=(new == key)) left.append(oldb) right.append(newb) self.patchset_keys[oldb] = key self.patchset_keys[newb] = key left = urwid.Pile(left) right = urwid.Pile(right) table = urwid.Columns([left, right]) rows = [] rows.append(table) rows.append(urwid.Divider()) rows.append(button_columns) pile = urwid.Pile(rows) fill = urwid.Filler(pile, valign='top') title = 'Patchsets' super(PatchsetDialog, self).__init__(urwid.LineBox(fill, title))
def __init__(self, view, diff, chunk): focus_map={'context-button':'focused-context-button'} buttons = [mywid.FixedButton(('context-button', "Expand previous 10"), on_press=self.prev), mywid.FixedButton(('context-button', "Expand"), on_press=self.all), mywid.FixedButton(('context-button', "Expand next 10"), on_press=self.next)] self._buttons = buttons buttons = [('pack', urwid.AttrMap(b, None, focus_map=focus_map)) for b in buttons] buttons = urwid.Columns([urwid.Text('')] + buttons + [urwid.Text('')], dividechars=4) buttons = urwid.AttrMap(buttons, 'context-button') super(DiffContextButton, self).__init__(buttons) self.view = view self.diff = diff self.chunk = chunk self.update()
def __init__(self, revision_row): self.revision_row = revision_row self.change_view = revision_row.change_view self.app = self.change_view.app save_button = mywid.FixedButton(u'Save') cancel_button = mywid.FixedButton(u'Cancel') urwid.connect_signal(save_button, 'click', lambda button: self._emit('save')) urwid.connect_signal(cancel_button, 'click', lambda button: self._emit('cancel')) buttons = urwid.Columns([('pack', save_button), ('pack', cancel_button)], dividechars=2) rows = [] categories = [] values = {} self.button_groups = {} message = '' with self.app.db.getSession() as session: revision = session.getRevision(self.revision_row.revision_key) change = revision.change if revision == change.revisions[-1]: for label in change.permitted_labels: if label.category not in categories: categories.append(label.category) values[label.category] = [] values[label.category].append(label.value) draft_approvals = {} for approval in change.draft_approvals: draft_approvals[approval.category] = approval for category in categories: rows.append(urwid.Text(category)) group = [] self.button_groups[category] = group current = draft_approvals.get(category) if current is None: current = 0 else: current = current.value for value in values[category]: if value > 0: strvalue = '+%s' % value elif value == 0: strvalue = ' 0' else: strvalue = str(value) b = urwid.RadioButton(group, strvalue, state=(value == current)) rows.append(b) rows.append(urwid.Divider()) m = revision.getPendingMessage() if not m: m = revision.getDraftMessage() if m: message = m.message self.message = urwid.Edit("Message: \n", edit_text=message, multiline=True) rows.append(self.message) rows.append(urwid.Divider()) rows.append(buttons) pile = urwid.Pile(rows) fill = urwid.Filler(pile, valign='top') super(ReviewDialog, self).__init__(urwid.LineBox(fill, 'Review'))
def __init__(self, app, change_view, repo, revision, expanded=False): super(RevisionRow, self).__init__(urwid.Pile([])) self.app = app self.change_view = change_view self.revision_key = revision.key self.project_name = revision.change.project.name self.commit_sha = revision.commit self.title = mywid.TextButton(u'', on_press=self.expandContract) stats = repo.diffstat(revision.parent, revision.commit) table = mywid.Table(columns=3) total_added = 0 total_removed = 0 for added, removed, filename in stats: try: added = int(added) except ValueError: added = 0 try: removed = int(removed) except ValueError: removed = 0 total_added += added total_removed += removed table.addRow([ urwid.Text(('filename', filename), wrap='clip'), urwid.Text([('lines-added', '+%i' % (added, )), ', '], align=urwid.RIGHT), urwid.Text(('lines-removed', '-%i' % (removed, ))) ]) table.addRow([ urwid.Text(''), urwid.Text([('lines-added', '+%i' % (total_added, )), ', '], align=urwid.RIGHT), urwid.Text(('lines-removed', '-%i' % (total_removed, ))) ]) table = urwid.Padding(table, width='pack') focus_map = {'revision-button': 'focused-revision-button'} self.review_button = ReviewButton(self) buttons = [ self.review_button, mywid.FixedButton(('revision-button', "Diff"), on_press=self.diff), mywid.FixedButton(('revision-button', "Local Checkout"), on_press=self.checkout), mywid.FixedButton(('revision-button', "Local Cherry-Pick"), on_press=self.cherryPick) ] buttons = [('pack', urwid.AttrMap(b, None, focus_map=focus_map)) for b in buttons] buttons = urwid.Columns(buttons + [urwid.Text('')], dividechars=2) buttons = urwid.AttrMap(buttons, 'revision-button') self.more = urwid.Pile([table, buttons]) padded_title = urwid.Padding(self.title, width='pack') self.pile = urwid.Pile([padded_title]) self._w = urwid.AttrMap(self.pile, None, focus_map=self.revision_focus_map) self.expanded = False self.update(revision) if expanded: self.expandContract(None)
def __init__(self, app, revision_key): self.revision_key = revision_key self.app = app save_button = mywid.FixedButton(u'Save') submit_button = mywid.FixedButton(u'Save and Submit') cancel_button = mywid.FixedButton(u'Cancel') urwid.connect_signal(save_button, 'click', lambda button: self._emit('save')) urwid.connect_signal(submit_button, 'click', lambda button: self._emit('submit')) urwid.connect_signal(cancel_button, 'click', lambda button: self._emit('cancel')) rows = [] categories = [] values = {} descriptions = {} self.button_groups = {} message = '' with self.app.db.getSession() as session: revision = session.getRevision(self.revision_key) change = revision.change buttons = [('pack', save_button)] if revision.can_submit: buttons.append(('pack', submit_button)) buttons.append(('pack', cancel_button)) buttons = urwid.Columns(buttons, dividechars=2) if revision == change.revisions[-1]: for label in change.labels: d = descriptions.setdefault(label.category, {}) d[label.value] = label.description vmin = d.setdefault('min', label.value) if label.value < vmin: d['min'] = label.value vmax = d.setdefault('max', label.value) if label.value > vmax: d['max'] = label.value for label in change.permitted_labels: if label.category not in categories: categories.append(label.category) values[label.category] = [] values[label.category].append(label.value) draft_approvals = {} for approval in change.draft_approvals: draft_approvals[approval.category] = approval for category in categories: rows.append(urwid.Text(category)) group = [] self.button_groups[category] = group current = draft_approvals.get(category) if current is None: current = 0 else: current = current.value for value in sorted(values[category], reverse=True): if value > 0: strvalue = '+%s' % value elif value == 0: strvalue = ' 0' else: strvalue = str(value) strvalue += ' ' + descriptions[category][value] b = urwid.RadioButton(group, strvalue, state=(value == current)) b._value = value if value > 0: if value == descriptions[category]['max']: b = urwid.AttrMap(b, 'max-label') else: b = urwid.AttrMap(b, 'positive-label') elif value < 0: if value == descriptions[category]['min']: b = urwid.AttrMap(b, 'min-label') else: b = urwid.AttrMap(b, 'negative-label') rows.append(b) rows.append(urwid.Divider()) m = revision.getPendingMessage() if not m: m = revision.getDraftMessage() if m: message = m.message self.message = mywid.MyEdit("Message: \n", edit_text=message, multiline=True, ring=app.ring) rows.append(self.message) rows.append(urwid.Divider()) rows.append(buttons) pile = urwid.Pile(rows) fill = urwid.Filler(pile, valign='top') super(ReviewDialog, self).__init__(urwid.LineBox(fill, 'Review'))
def __init__(self, app, change_view, repo, revision, expanded=False): super(RevisionRow, self).__init__(urwid.Pile([])) self.app = app self.change_view = change_view self.revision_key = revision.key self.project_name = revision.change.project.name self.commit_sha = revision.commit self.can_submit = revision.can_submit self.title = mywid.TextButton(u'', on_press=self.expandContract) table = mywid.Table(columns=3) total_added = 0 total_removed = 0 for rfile in revision.files: if rfile.status is None: continue added = rfile.inserted or 0 removed = rfile.deleted or 0 total_added += added total_removed += removed table.addRow([ urwid.Text(('filename', rfile.display_path), wrap='clip'), urwid.Text([('lines-added', '+%i' % (added, )), ', '], align=urwid.RIGHT), urwid.Text(('lines-removed', '-%i' % (removed, ))) ]) table.addRow([ urwid.Text(''), urwid.Text([('lines-added', '+%i' % (total_added, )), ', '], align=urwid.RIGHT), urwid.Text(('lines-removed', '-%i' % (total_removed, ))) ]) table = urwid.Padding(table, width='pack') focus_map = {'revision-button': 'focused-revision-button'} self.review_button = ReviewButton(self) buttons = [ self.review_button, mywid.FixedButton(('revision-button', "Diff"), on_press=self.diff), mywid.FixedButton(('revision-button', "Local Checkout"), on_press=self.checkout), mywid.FixedButton(('revision-button', "Local Cherry-Pick"), on_press=self.cherryPick) ] if self.can_submit: buttons.append( mywid.FixedButton( ('revision-button', "Submit"), on_press=lambda x: self.change_view.doSubmitChange())) buttons = [('pack', urwid.AttrMap(b, None, focus_map=focus_map)) for b in buttons] buttons = urwid.Columns(buttons + [urwid.Text('')], dividechars=2) buttons = urwid.AttrMap(buttons, 'revision-button') self.more = urwid.Pile([table, buttons]) padded_title = urwid.Padding(self.title, width='pack') self.pile = urwid.Pile([padded_title]) self._w = urwid.AttrMap(self.pile, None, focus_map=self.revision_focus_map) self.expanded = False self.update(revision) if expanded: self.expandContract(None)