/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-04-07 20:34:51 UTC
  • mfrom: (450.6.13 bugs)
  • mto: (463.2.1 bug.78765)
  • mto: This revision was merged to the branch mainline in revision 462.
  • Revision ID: daniel.schierbeck@gmail.com-20080407203451-2i6el7jf9t0k9y64
Merged bug page improvements.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
import gtk
21
21
import pango
22
22
import gobject
23
 
import webbrowser
 
23
import subprocess
24
24
 
 
25
from bzrlib.plugins.gtk import icon_path
25
26
from bzrlib.osutils import format_date
26
27
from bzrlib.util.bencode import bdecode
27
 
from bzrlib.testament import Testament
28
 
 
29
 
from bzrlib.plugins.gtk import icon_path
30
28
 
31
29
try:
32
30
    from bzrlib.plugins.gtk import seahorse
35
33
else:
36
34
    has_seahorse = True
37
35
 
38
 
PAGE_GENERAL = 0
39
 
PAGE_RELATIONS = 1
40
 
PAGE_SIGNATURE = 2
41
 
PAGE_BUGS = 3
42
 
 
43
 
 
44
36
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)
48
 
    webbrowser.open(uri)
 
37
    subprocess.Popen(['sensible-browser', uri], close_fds=True)
49
38
 
50
39
gtk.link_button_set_uri_hook(_open_link)
51
40
 
222
211
                                        "This revision has not been signed.")
223
212
 
224
213
    def show_signature(self, 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
 
214
        key = seahorse.verify(crypttext)
236
215
 
237
216
        if key and key.is_available():
238
217
            if key.is_trusted():
321
300
        )
322
301
    }
323
302
 
324
 
    def __init__(self, branch=None, repository=None):
 
303
 
 
304
    def __init__(self, branch=None):
325
305
        gtk.Notebook.__init__(self)
326
306
 
327
307
        self._revision = None
328
308
        self._branch = branch
329
 
        if branch is not None:
330
 
            self._repository = branch.repository
331
 
        else:
332
 
            self._repository = repository
333
309
 
334
310
        self._create_general()
335
311
        self._create_relations()
336
 
        # Disabled because testaments aren't verified yet:
337
312
        if has_seahorse:
338
313
            self._create_signature()
339
314
        self._create_file_info_view()
340
315
        self._create_bugs()
341
316
 
342
 
        self.set_current_page(PAGE_GENERAL)
343
 
        self.connect_after('switch-page', self._switch_page_cb)
 
317
        self.set_current_page(0)
344
318
        
345
319
        self._show_callback = None
346
320
        self._clicked_callback = None
456
430
        self._add_tags()
457
431
 
458
432
    def _update_signature(self, widget, param):
459
 
        if self.get_current_page() == PAGE_SIGNATURE:
460
 
            self.signature_table.set_revision(self._revision)
 
433
        self.signature_table.set_revision(self._revision)
461
434
 
462
435
    def _update_bugs(self, widget, param):
463
436
        self.bugs_page.set_revision(self._revision)
469
442
                                      self.children_widgets,
470
443
                                      self.children_table)
471
444
 
472
 
    def _switch_page_cb(self, notebook, page, page_num):
473
 
        if page_num == PAGE_SIGNATURE:
474
 
            self.signature_table.set_revision(self._revision)
475
 
 
476
 
 
477
 
 
478
445
    def _show_clicked_cb(self, widget, revid, parentid):
479
446
        """Callback for when the show button for a parent is clicked."""
480
447
        self._show_callback(revid, parentid)
534
501
 
535
502
            button = gtk.Button(revid)
536
503
            button.connect("clicked",
537
 
                    lambda w, r: self.set_revision(self._repository.get_revision(r)), revid)
 
504
                    lambda w, r: self.set_revision(self._branch.repository.get_revision(r)), revid)
538
505
            button.set_use_underline(False)
539
506
            hbox.pack_start(button, expand=False, fill=True)
540
507
            button.show()
556
523
        vbox.show()
557
524
 
558
525
    def _create_signature(self):
559
 
        self.signature_table = SignatureTab(self._repository)
 
526
        self.signature_table = SignatureTab(self._branch.repository)
560
527
        self.append_page(self.signature_table, tab_label=gtk.Label('Signature'))
561
528
        self.connect_after('notify::revision', self._update_signature)
562
529