/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: Vincent Ladeuil
  • Date: 2008-06-10 15:25:47 UTC
  • mto: This revision was merged to the branch mainline in revision 504.
  • Revision ID: v.ladeuil+lp@free.fr-20080610152547-dwmil1p8pd0mfpnl
Fix third failing test (thanks to jam).

* tests/test_commit.py:
(TestPendingRevisions.test_pending_revisions_multi_merge): Fix
provided by jam: bzr we now filter the pending merges so that only
the 'heads()' are included. We just ensure that the pending merges
contain the unique tips for the ancestries.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import gobject
23
23
import webbrowser
24
24
 
25
 
from bzrlib import trace
 
25
from bzrlib.plugins.gtk import icon_path
26
26
from bzrlib.osutils import format_date
27
 
try:
28
 
    from bzrlib.bencode import bdecode
29
 
except ImportError:
30
 
    from bzrlib.util.bencode import bdecode
31
 
from bzrlib.testament import Testament
32
 
 
33
 
from bzrlib.plugins.gtk import icon_path
 
27
from bzrlib.util.bencode import bdecode
34
28
 
35
29
try:
36
30
    from bzrlib.plugins.gtk import seahorse
44
38
PAGE_SIGNATURE = 2
45
39
PAGE_BUGS = 3
46
40
 
 
41
webbrowser.register('sensible-browser', None, webbrowser.GenericBrowser('sensible-browser'), -1)
 
42
webbrowser.register('xdg-open', None, webbrowser.GenericBrowser('xdg-open'), -1)
47
43
 
48
44
def _open_link(widget, uri):
49
 
    for cmd in ['sensible-browser', 'xdg-open']:
50
 
        if webbrowser._iscommand(cmd):
51
 
            webbrowser._tryorder.insert(0, '%s "%%s"' % cmd)
52
45
    webbrowser.open(uri)
53
46
 
54
47
gtk.link_button_set_uri_hook(_open_link)
226
219
                                        "This revision has not been signed.")
227
220
 
228
221
    def show_signature(self, crypttext):
229
 
        (cleartext, key) = seahorse.verify(crypttext)
230
 
 
231
 
        assert cleartext is not None
232
 
 
233
 
        inv = self.repository.get_inventory(self.revision.revision_id)
234
 
        expected_testament = Testament(self.revision, inv).as_short_text()
235
 
        if expected_testament != cleartext:
236
 
            self.signature_image.set_from_file(icon_path("sign-bad.png"))
237
 
            self.signature_label.set_markup("<b>Signature does not match repository data</b>\n" +
238
 
                        "The signature plaintext is different from the expected testament plaintext.")
239
 
            return
 
222
        key = seahorse.verify(crypttext)
240
223
 
241
224
        if key and key.is_available():
242
225
            if key.is_trusted():
338
321
        self._create_general()
339
322
        self._create_relations()
340
323
        # Disabled because testaments aren't verified yet:
341
 
        if has_seahorse:
342
 
            self._create_signature()
 
324
        # if has_seahorse:
 
325
        #    self._create_signature()
343
326
        self._create_file_info_view()
344
327
        self._create_bugs()
345
328
 
419
402
            self.timestamp.set_text(format_date(revision.timestamp,
420
403
                                                revision.timezone))
421
404
        try:
422
 
            self.branchnick.show()
423
 
            self.branchnick_label.show()
424
 
            self.branchnick.set_text(revision.properties['branch-nick'])
 
405
            self.branchnick_label.set_text(revision.properties['branch-nick'])
425
406
        except KeyError:
426
 
            self.branchnick.hide()
427
 
            self.branchnick_label.hide()
 
407
            self.branchnick_label.set_text("")
428
408
 
429
409
        self._add_parents_or_children(revision.parent_ids,
430
410
                                      self.parents_widgets,
431
411
                                      self.parents_table)
432
 
 
 
412
        
433
413
        file_info = revision.properties.get('file-info', None)
434
414
        if file_info is not None:
435
 
            try:
436
 
                file_info = bdecode(file_info.encode('UTF-8'))
437
 
            except ValueError:
438
 
                trace.note('Invalid per-file info for revision:%s, value: %r',
439
 
                           revision.revision_id, file_info)
440
 
                file_info = None
 
415
            file_info = bdecode(file_info.encode('UTF-8'))
441
416
 
442
417
        if file_info:
443
418
            if self._file_id is None:
521
496
        table.resize(max(len(revids), 1), 2)
522
497
 
523
498
        for idx, revid in enumerate(revids):
524
 
            align = gtk.Alignment(0.0, 0.0, 1, 1)
 
499
            align = gtk.Alignment(0.0, 0.0)
525
500
            widgets.append(align)
526
501
            table.attach(align, 1, 2, idx, idx + 1,
527
502
                                      gtk.EXPAND | gtk.FILL, gtk.FILL)
544
519
                hbox.pack_start(button, expand=False, fill=True)
545
520
                button.show()
546
521
 
547
 
            button = gtk.Button()
548
 
            revid_label = gtk.Label(str(revid))
549
 
            revid_label.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
550
 
            revid_label.set_alignment(0.0, 0.5)
551
 
            button.add(revid_label)
 
522
            button = gtk.Button(revid)
552
523
            button.connect("clicked",
553
524
                    lambda w, r: self.set_revision(self._repository.get_revision(r)), revid)
554
525
            button.set_use_underline(False)
555
 
            hbox.pack_start(button, expand=True, fill=True)
556
 
            button.show_all()
 
526
            hbox.pack_start(button, expand=False, fill=True)
 
527
            button.show()
557
528
 
558
529
    def _create_general(self):
559
530
        vbox = gtk.VBox(False, 6)
582
553
        self.table.set_col_spacings(6)
583
554
        self.table.show()
584
555
 
585
 
        row = 0
586
 
 
 
556
        align = gtk.Alignment(1.0, 0.5)
587
557
        label = gtk.Label()
588
 
        label.set_alignment(1.0, 0.5)
589
558
        label.set_markup("<b>Revision Id:</b>")
590
 
        self.table.attach(label, 0, 1, row, row+1, gtk.FILL, gtk.FILL)
 
559
        align.add(label)
 
560
        self.table.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
 
561
        align.show()
591
562
        label.show()
592
563
 
 
564
        align = gtk.Alignment(0.0, 0.5)
593
565
        revision_id = gtk.Label()
594
 
        revision_id.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
595
 
        revision_id.set_alignment(0.0, 0.5)
596
566
        revision_id.set_selectable(True)
597
567
        self.connect('notify::revision', 
598
568
                lambda w, p: revision_id.set_text(self._revision.revision_id))
599
 
        self.table.attach(revision_id, 1, 2, row, row+1, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
569
        align.add(revision_id)
 
570
        self.table.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
571
        align.show()
600
572
        revision_id.show()
601
573
 
602
 
        row += 1
 
574
        align = gtk.Alignment(1.0, 0.5)
603
575
        self.author_label = gtk.Label()
604
 
        self.author_label.set_alignment(1.0, 0.5)
605
576
        self.author_label.set_markup("<b>Author:</b>")
606
 
        self.table.attach(self.author_label, 0, 1, row, row+1, gtk.FILL, gtk.FILL)
 
577
        align.add(self.author_label)
 
578
        self.table.attach(align, 0, 1, 1, 2, gtk.FILL, gtk.FILL)
 
579
        align.show()
607
580
        self.author_label.show()
608
581
 
 
582
        align = gtk.Alignment(0.0, 0.5)
609
583
        self.author = gtk.Label()
610
 
        self.author.set_ellipsize(pango.ELLIPSIZE_END)
611
 
        self.author.set_alignment(0.0, 0.5)
612
584
        self.author.set_selectable(True)
613
 
        self.table.attach(self.author, 1, 2, row, row+1, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
585
        align.add(self.author)
 
586
        self.table.attach(align, 1, 2, 1, 2, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
587
        align.show()
614
588
        self.author.show()
615
589
        self.author.hide()
616
590
 
617
 
        row += 1
 
591
        align = gtk.Alignment(1.0, 0.5)
618
592
        label = gtk.Label()
619
 
        label.set_alignment(1.0, 0.5)
620
593
        label.set_markup("<b>Committer:</b>")
621
 
        self.table.attach(label, 0, 1, row, row+1, gtk.FILL, gtk.FILL)
 
594
        align.add(label)
 
595
        self.table.attach(align, 0, 1, 2, 3, gtk.FILL, gtk.FILL)
 
596
        align.show()
622
597
        label.show()
623
598
 
 
599
        align = gtk.Alignment(0.0, 0.5)
624
600
        self.committer = gtk.Label()
625
 
        self.committer.set_ellipsize(pango.ELLIPSIZE_END)
626
 
        self.committer.set_alignment(0.0, 0.5)
627
601
        self.committer.set_selectable(True)
628
 
        self.table.attach(self.committer, 1, 2, row, row+1, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
602
        align.add(self.committer)
 
603
        self.table.attach(align, 1, 2, 2, 3, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
604
        align.show()
629
605
        self.committer.show()
630
606
 
631
 
        row += 1
 
607
        align = gtk.Alignment(0.0, 0.5)
 
608
        label = gtk.Label()
 
609
        label.set_markup("<b>Branch nick:</b>")
 
610
        align.add(label)
 
611
        self.table.attach(align, 0, 1, 3, 4, gtk.FILL, gtk.FILL)
 
612
        label.show()
 
613
        align.show()
 
614
 
 
615
        align = gtk.Alignment(0.0, 0.5)
632
616
        self.branchnick_label = gtk.Label()
633
 
        self.branchnick_label.set_alignment(1.0, 0.5)
634
 
        self.branchnick_label.set_markup("<b>Branch nick:</b>")
635
 
        self.table.attach(self.branchnick_label, 0, 1, row, row+1, gtk.FILL, gtk.FILL)
 
617
        self.branchnick_label.set_selectable(True)
 
618
        align.add(self.branchnick_label)
 
619
        self.table.attach(align, 1, 2, 3, 4, gtk.EXPAND | gtk.FILL, gtk.FILL)
636
620
        self.branchnick_label.show()
637
 
 
638
 
        self.branchnick = gtk.Label()
639
 
        self.branchnick.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
640
 
        self.branchnick.set_alignment(0.0, 0.5)
641
 
        self.branchnick.set_selectable(True)
642
 
        self.table.attach(self.branchnick, 1, 2, row, row+1, gtk.EXPAND | gtk.FILL, gtk.FILL)
643
 
        self.branchnick.show()
644
 
 
645
 
        row += 1
 
621
        align.show()
 
622
 
 
623
        align = gtk.Alignment(1.0, 0.5)
646
624
        label = gtk.Label()
647
 
        label.set_alignment(1.0, 0.5)
648
625
        label.set_markup("<b>Timestamp:</b>")
649
 
        self.table.attach(label, 0, 1, row, row+1, gtk.FILL, gtk.FILL)
 
626
        align.add(label)
 
627
        self.table.attach(align, 0, 1, 4, 5, gtk.FILL, gtk.FILL)
 
628
        align.show()
650
629
        label.show()
651
630
 
 
631
        align = gtk.Alignment(0.0, 0.5)
652
632
        self.timestamp = gtk.Label()
653
 
        self.timestamp.set_ellipsize(pango.ELLIPSIZE_END)
654
 
        self.timestamp.set_alignment(0.0, 0.5)
655
633
        self.timestamp.set_selectable(True)
656
 
        self.table.attach(self.timestamp, 1, 2, row, row+1, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
634
        align.add(self.timestamp)
 
635
        self.table.attach(align, 1, 2, 4, 5, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
636
        align.show()
657
637
        self.timestamp.show()
658
638
 
659
 
        row += 1
 
639
        align = gtk.Alignment(1.0, 0.5)
660
640
        self.tags_label = gtk.Label()
661
 
        self.tags_label.set_alignment(1.0, 0.5)
662
641
        self.tags_label.set_markup("<b>Tags:</b>")
663
 
        self.table.attach(self.tags_label, 0, 1, row, row+1, gtk.FILL, gtk.FILL)
 
642
        align.add(self.tags_label)
 
643
        align.show()
 
644
        self.table.attach(align, 0, 1, 5, 6, gtk.FILL, gtk.FILL)
664
645
        self.tags_label.show()
665
646
 
 
647
        align = gtk.Alignment(0.0, 0.5)
666
648
        self.tags_list = gtk.Label()
667
 
        self.tags_list.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
668
 
        self.tags_list.set_alignment(0.0, 0.5)
669
 
        self.table.attach(self.tags_list, 1, 2, row, row+1, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
649
        align.add(self.tags_list)
 
650
        self.table.attach(align, 1, 2, 5, 6, gtk.EXPAND | gtk.FILL, gtk.FILL)
 
651
        align.show()
670
652
        self.tags_list.show()
671
653
 
672
654
        self.connect('notify::revision', self._add_tags)