Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
 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'))
Exemplo n.º 3
0
 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])
Exemplo n.º 4
0
 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])
Exemplo n.º 5
0
    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))
Exemplo n.º 6
0
 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()
Exemplo n.º 7
0
 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'))
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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'))
Exemplo n.º 10
0
    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)