23
from gpg import GPGSubprocess
24
25
from bzrlib.osutils import format_date
25
26
from bzrlib.util.bencode import bdecode
27
30
class RevisionView(gtk.Notebook):
28
31
""" Custom widget for commit log details.
186
190
self.file_info_box.hide()
188
if self._branch.repository.has_signature_for_revision_id(revision.revision_id):
189
from gpg import GPGSubprocess
190
gpg = GPGSubprocess()
191
signature_text = self._branch.repository.get_signature_text(revision.revision_id)
192
signature = gpg.verify(signature_text)
194
if signature.key_id is not None:
195
self.signature_key_id.set_text(signature.key_id)
197
if signature.is_valid():
198
self.signature_image.set_from_file("icons/sign-ok.png")
199
self.signature_label.set_text("This revision has been signed.")
201
self.signature_image.set_from_file("icons/sign-bad.png")
202
self.signature_label.set_text("This revision has been signed, but the authenticity of the signature cannot be verified.")
204
self.signature_key_id.set_text("")
205
self.signature_image.set_from_file("icons/sign-unknown.png")
206
self.signature_label.set_text("This revision has not been signed.")
208
192
def _show_clicked_cb(self, widget, revid, parentid):
209
193
"""Callback for when the show button for a parent is clicked."""
210
194
self._show_callback(revid, parentid)
282
266
self.append_page(vbox, tab_label=gtk.Label("Relations"))
269
def _create_signature(self):
270
signature_box = gtk.Table(rows=1, columns=2)
271
signature_box.set_col_spacing(0, 12)
273
self.signature_image = gtk.Image()
274
signature_box.attach(self.signature_image, 0, 1, 0, 1, gtk.FILL)
276
self.signature_label = gtk.Label()
277
signature_box.attach(self.signature_label, 1, 2, 0, 1, gtk.FILL)
279
signature_info = gtk.Table(rows=1, columns=2)
280
signature_info.set_row_spacings(6)
281
signature_info.set_col_spacings(6)
283
align = gtk.Alignment(1.0, 0.5)
285
label.set_markup("<b>Key Id:</b>")
287
signature_info.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
289
align = gtk.Alignment(0.0, 0.5)
290
self.signature_key_id = gtk.Label()
291
self.signature_key_id.set_selectable(True)
292
align.add(self.signature_key_id)
293
signature_info.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
295
box = gtk.VBox(False, 6)
296
box.set_border_width(6)
297
box.pack_start(signature_box, expand=False)
298
box.pack_start(signature_info, expand=False)
300
self.append_page(box, tab_label=gtk.Label("Signature"))
302
self.connect_after('notify::revision', self._update_signature)
285
304
def _create_headers(self):
286
305
self.table = gtk.Table(rows=5, columns=2)
287
306
self.table.set_row_spacings(6)
446
def _create_signature(self):
447
signature_box = gtk.Table(rows=1, columns=2)
448
signature_box.set_col_spacing(0, 12)
450
self.signature_image = gtk.Image()
451
signature_box.attach(self.signature_image, 0, 1, 0, 1, gtk.FILL)
453
self.signature_label = gtk.Label()
454
signature_box.attach(self.signature_label, 1, 2, 0, 1, gtk.FILL)
456
signature_info = gtk.Table(rows=1, columns=2)
457
signature_info.set_row_spacings(6)
458
signature_info.set_col_spacings(6)
460
align = gtk.Alignment(1.0, 0.5)
462
label.set_markup("<b>Key Id:</b>")
464
signature_info.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
466
align = gtk.Alignment(0.0, 0.5)
467
self.signature_key_id = gtk.Label()
468
self.signature_key_id.set_selectable(True)
469
align.add(self.signature_key_id)
470
signature_info.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
472
box = gtk.VBox(False, 6)
473
box.set_border_width(6)
474
box.pack_start(signature_box, expand=False)
475
box.pack_start(signature_info, expand=False)
477
self.append_page(box, tab_label=gtk.Label("Signature"))
479
464
def _create_file_info_view(self):
480
465
self.file_info_box = gtk.VBox(False, 6)
481
466
self.file_info_box.set_border_width(6)
494
479
self.file_info_box.hide() # Only shown when there are per-file messages
495
480
self.append_page(self.file_info_box, tab_label=gtk.Label('Per-file'))
482
def _update_signature(self, widget, param):
483
revid = self._revision.revision_id
485
if self._repository.has_signature_for_revision_id(revid):
486
signature_text = self._repository.get_signature_text(revid)
487
signature = gpg.verify(signature_text)
489
if signature.key_id is not None:
490
self.signature_key_id.set_text(signature.key_id)
492
if signature.is_valid():
493
self.signature_image.set_from_file("icons/sign-ok.png")
494
self.signature_label.set_text("This revision has been signed.")
496
self.signature_image.set_from_file("icons/sign-bad.png")
497
self.signature_label.set_text("This revision has been signed, but the authenticity of the signature cannot be verified.")
499
self.signature_key_id.set_text("")
500
self.signature_image.set_from_file("icons/sign-unknown.png")
501
self.signature_label.set_text("This revision has not been signed.")