/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to revisionview.py

  • Committer: Daniel Schierbeck
  • Date: 2008-01-22 20:54:20 UTC
  • mto: (450.1.11 trunk) (399.1.17 signatures)
  • mto: This revision was merged to the branch mainline in revision 458.
  • Revision ID: daniel.schierbeck@gmail.com-20080122205420-qnplv2tv90lydoh3
Improved implementation of the Signature page.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
import gtk
21
21
import gobject
22
22
import pango
 
23
from gpg import GPGSubprocess
23
24
 
24
25
from bzrlib.osutils import format_date
25
26
from bzrlib.util.bencode import bdecode
26
27
 
 
28
gpg = GPGSubprocess()
 
29
 
27
30
class RevisionView(gtk.Notebook):
28
31
    """ Custom widget for commit log details.
29
32
 
77
80
 
78
81
        self._revision = None
79
82
        self._branch = branch
 
83
        self._repository = branch.repository
80
84
 
81
85
        if self._branch is not None and self._branch.supports_tags():
82
86
            self._tagdict = self._branch.tags.get_reverse_tag_dict()
185
189
        else:
186
190
            self.file_info_box.hide()
187
191
 
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)
193
 
 
194
 
            if signature.key_id is not None:
195
 
                self.signature_key_id.set_text(signature.key_id)
196
 
 
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.")
200
 
            else:
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.")
203
 
        else:
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.")
207
 
 
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"))
283
267
        vbox.show()
284
268
 
 
269
    def _create_signature(self):
 
270
        signature_box = gtk.Table(rows=1, columns=2)
 
271
        signature_box.set_col_spacing(0, 12)
 
272
 
 
273
        self.signature_image = gtk.Image()
 
274
        signature_box.attach(self.signature_image, 0, 1, 0, 1, gtk.FILL)
 
275
 
 
276
        self.signature_label = gtk.Label()
 
277
        signature_box.attach(self.signature_label, 1, 2, 0, 1, gtk.FILL)
 
278
 
 
279
        signature_info = gtk.Table(rows=1, columns=2)
 
280
        signature_info.set_row_spacings(6)
 
281
        signature_info.set_col_spacings(6)
 
282
 
 
283
        align = gtk.Alignment(1.0, 0.5)
 
284
        label = gtk.Label()
 
285
        label.set_markup("<b>Key Id:</b>")
 
286
        align.add(label)
 
287
        signature_info.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
 
288
 
 
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)
 
294
 
 
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)
 
299
        box.show_all()
 
300
        self.append_page(box, tab_label=gtk.Label("Signature"))
 
301
 
 
302
        self.connect_after('notify::revision', self._update_signature)
 
303
 
285
304
    def _create_headers(self):
286
305
        self.table = gtk.Table(rows=5, columns=2)
287
306
        self.table.set_row_spacings(6)
389
408
        self.connect('notify::revision', self._add_tags)
390
409
 
391
410
        return self.table
392
 
 
393
411
    
394
412
    def _create_parents(self):
395
413
        hbox = gtk.HBox(True, 3)
443
461
        window.show()
444
462
        return window
445
463
 
446
 
    def _create_signature(self):
447
 
        signature_box = gtk.Table(rows=1, columns=2)
448
 
        signature_box.set_col_spacing(0, 12)
449
 
 
450
 
        self.signature_image = gtk.Image()
451
 
        signature_box.attach(self.signature_image, 0, 1, 0, 1, gtk.FILL)
452
 
 
453
 
        self.signature_label = gtk.Label()
454
 
        signature_box.attach(self.signature_label, 1, 2, 0, 1, gtk.FILL)
455
 
 
456
 
        signature_info = gtk.Table(rows=1, columns=2)
457
 
        signature_info.set_row_spacings(6)
458
 
        signature_info.set_col_spacings(6)
459
 
 
460
 
        align = gtk.Alignment(1.0, 0.5)
461
 
        label = gtk.Label()
462
 
        label.set_markup("<b>Key Id:</b>")
463
 
        align.add(label)
464
 
        signature_info.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
465
 
 
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)
471
 
 
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)
476
 
        box.show_all()
477
 
        self.append_page(box, tab_label=gtk.Label("Signature"))
478
 
 
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'))
496
481
 
 
482
    def _update_signature(self, widget, param):
 
483
        revid = self._revision.revision_id
 
484
 
 
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)
 
488
 
 
489
            if signature.key_id is not None:
 
490
                self.signature_key_id.set_text(signature.key_id)
 
491
 
 
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.")
 
495
            else:
 
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.")
 
498
        else:
 
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.")
 
502
 
 
503