24
from gpg import GPGSubprocess
26
25
from bzrlib.osutils import format_date
27
26
from bzrlib.util.bencode import bdecode
31
28
def _open_link(widget, uri):
32
29
subprocess.Popen(['sensible-browser', uri], close_fds=True)
57
class SignatureTab(gtk.VBox):
59
from gpg import GPGSubprocess
60
self.gpg = GPGSubprocess()
61
super(SignatureTab, self).__init__(False, 6)
62
signature_box = gtk.Table(rows=1, columns=2)
63
signature_box.set_col_spacing(0, 12)
65
self.signature_image = gtk.Image()
66
signature_box.attach(self.signature_image, 0, 1, 0, 1, gtk.FILL)
68
self.signature_label = gtk.Label()
69
signature_box.attach(self.signature_label, 1, 2, 0, 1, gtk.FILL)
71
signature_info = gtk.Table(rows=1, columns=2)
72
signature_info.set_row_spacings(6)
73
signature_info.set_col_spacings(6)
75
align = gtk.Alignment(1.0, 0.5)
77
label.set_markup("<b>Key Id:</b>")
79
signature_info.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
81
align = gtk.Alignment(0.0, 0.5)
82
self.signature_key_id = gtk.Label()
83
self.signature_key_id.set_selectable(True)
84
align.add(self.signature_key_id)
85
signature_info.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
87
self.set_border_width(6)
88
self.pack_start(signature_box, expand=False)
89
self.pack_start(signature_info, expand=False)
60
93
class RevisionView(gtk.Notebook):
61
94
""" Custom widget for commit log details.
232
265
if self._branch.repository.has_signature_for_revision_id(revid):
233
266
signature_text = self._branch.repository.get_signature_text(revid)
234
signature = gpg.verify(signature_text)
267
signature = self.signature_table.gpg.verify(signature_text)
236
269
if signature.key_id is not None:
237
270
self.signature_key_id.set_text(signature.key_id)
336
369
def _create_signature(self):
337
signature_box = gtk.Table(rows=1, columns=2)
338
signature_box.set_col_spacing(0, 12)
340
self.signature_image = gtk.Image()
341
signature_box.attach(self.signature_image, 0, 1, 0, 1, gtk.FILL)
343
self.signature_label = gtk.Label()
344
signature_box.attach(self.signature_label, 1, 2, 0, 1, gtk.FILL)
346
signature_info = gtk.Table(rows=1, columns=2)
347
signature_info.set_row_spacings(6)
348
signature_info.set_col_spacings(6)
350
align = gtk.Alignment(1.0, 0.5)
352
label.set_markup("<b>Key Id:</b>")
354
signature_info.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
356
align = gtk.Alignment(0.0, 0.5)
357
self.signature_key_id = gtk.Label()
358
self.signature_key_id.set_selectable(True)
359
align.add(self.signature_key_id)
360
signature_info.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
362
box = gtk.VBox(False, 6)
363
box.set_border_width(6)
364
box.pack_start(signature_box, expand=False)
365
box.pack_start(signature_info, expand=False)
367
self.append_page(box, tab_label=gtk.Label("Signature"))
371
self.signature_table = SignatureTab()
372
except ImportError: # No GPG module installed
373
self.signature_table = None
375
self.append_page(self.signature_table, tab_label=gtk.Label('Signature'))
369
376
self.connect_after('notify::revision', self._update_signature)
371
378
def _create_headers(self):