58
class SignatureTab(gtk.VBox):
60
from gpg import GPGSubprocess
61
self.gpg = GPGSubprocess()
62
super(SignatureTab, self).__init__(False, 6)
63
signature_box = gtk.Table(rows=1, columns=2)
64
signature_box.set_col_spacing(0, 12)
66
self.signature_image = gtk.Image()
67
signature_box.attach(self.signature_image, 0, 1, 0, 1, gtk.FILL)
69
self.signature_label = gtk.Label()
70
signature_box.attach(self.signature_label, 1, 2, 0, 1, gtk.FILL)
72
signature_info = gtk.Table(rows=1, columns=2)
73
signature_info.set_row_spacings(6)
74
signature_info.set_col_spacings(6)
76
align = gtk.Alignment(1.0, 0.5)
78
label.set_markup("<b>Key Id:</b>")
80
signature_info.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
82
align = gtk.Alignment(0.0, 0.5)
83
self.signature_key_id = gtk.Label()
84
self.signature_key_id.set_selectable(True)
85
align.add(self.signature_key_id)
86
signature_info.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
88
self.set_border_width(6)
89
self.pack_start(signature_box, expand=False)
90
self.pack_start(signature_info, expand=False)
93
def show_no_signature(self):
94
self.signature_key_id.set_text("")
95
self.signature_image.set_from_file(icon_path("sign-unknown.png"))
96
self.signature_label.set_text("This revision has not been signed.")
98
def show_signature(self, text):
99
signature = self.gpg.verify(text)
101
if signature.key_id is not None:
102
self.signature_key_id.set_text(signature.key_id)
104
if signature.is_valid():
105
self.signature_image.set_from_file(icon_path("sign-ok.png"))
106
self.signature_label.set_text("This revision has been signed.")
108
self.signature_image.set_from_file(icon_path("sign-bad.png"))
109
self.signature_label.set_text("This revision has been signed, " +
110
"but the authenticity of the signature cannot be verified.")
57
113
class RevisionView(gtk.Notebook):
58
114
""" Custom widget for commit log details.
282
def _update_signature(self, widget, param):
283
revid = self._revision.revision_id
285
if self._branch.repository.has_signature_for_revision_id(revid):
286
signature_text = self._branch.repository.get_signature_text(revid)
287
self.signature_table.show_signature(signature_text)
289
self.signature_table.show_no_signature()
225
291
def set_children(self, children):
226
292
self._add_parents_or_children(children,
227
293
self.children_widgets,
306
373
self.append_page(vbox, tab_label=gtk.Label("Relations"))
376
def _create_signature(self):
378
self.signature_table = SignatureTab()
379
except ValueError: # No GPG found
380
self.signature_table = None
382
self.append_page(self.signature_table, tab_label=gtk.Label('Signature'))
383
self.connect_after('notify::revision', self._update_signature)
309
385
def _create_headers(self):
310
386
self.table = gtk.Table(rows=5, columns=2)
311
387
self.table.set_row_spacings(6)