/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: Jelmer Vernooij
  • Date: 2008-06-29 19:18:34 UTC
  • mto: This revision was merged to the branch mainline in revision 515.
  • Revision ID: jelmer@samba.org-20080629191834-ha2ecpv5szt96nge
Make sure signed testament matches repository data.

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.plugins.gtk import icon_path
26
25
from bzrlib.osutils import format_date
27
26
from bzrlib.util.bencode import bdecode
 
27
from bzrlib.testament import Testament
 
28
 
 
29
from bzrlib.plugins.gtk import icon_path
28
30
 
29
31
try:
30
32
    from bzrlib.plugins.gtk import seahorse
38
40
PAGE_SIGNATURE = 2
39
41
PAGE_BUGS = 3
40
42
 
41
 
webbrowser.register('sensible-browser', None, webbrowser.GenericBrowser('sensible-browser'), -1)
42
 
webbrowser.register('xdg-open', None, webbrowser.GenericBrowser('xdg-open'), -1)
43
43
 
44
44
def _open_link(widget, uri):
 
45
    for cmd in ['sensible-browser', 'xdg-open']:
 
46
        if webbrowser._iscommand(cmd):
 
47
            webbrowser._tryorder.insert(0, '%s "%%s"' % cmd)
45
48
    webbrowser.open(uri)
46
49
 
47
50
gtk.link_button_set_uri_hook(_open_link)
219
222
                                        "This revision has not been signed.")
220
223
 
221
224
    def show_signature(self, crypttext):
222
 
        key = seahorse.verify(crypttext)
 
225
        (cleartext, key) = seahorse.verify(crypttext)
 
226
 
 
227
        assert cleartext is not None
 
228
 
 
229
        inv = self.repository.get_inventory(self.revision.revision_id)
 
230
        expected_testament = Testament(self.revision, inv).as_short_text()
 
231
        if expected_testament != cleartext:
 
232
            self.signature_image.set_from_file(icon_path("sign-bad.png"))
 
233
            self.signature_label.set_markup("<b>Signature does not match repository data</b>\n" +
 
234
                        "The signature plaintext is different from the expected testament plaintext.")
 
235
            return
223
236
 
224
237
        if key and key.is_available():
225
238
            if key.is_trusted():
321
334
        self._create_general()
322
335
        self._create_relations()
323
336
        # Disabled because testaments aren't verified yet:
324
 
        # if has_seahorse:
325
 
        #    self._create_signature()
 
337
        if has_seahorse:
 
338
            self._create_signature()
326
339
        self._create_file_info_view()
327
340
        self._create_bugs()
328
341