51
51
webbrowser._tryorder.insert(0, '%s "%%s"' % cmd)
52
52
webbrowser.open(uri)
54
if getattr(gtk, 'link_button_set_uri_hook', None) is not None:
54
if getattr(Gtk, 'link_button_set_uri_hook', None) is not None:
55
55
Gtk.link_button_set_uri_hook(_open_link)
57
57
class BugsTab(Gtk.VBox):
59
59
def __init__(self):
60
super(BugsTab, self).__init__(False, 6)
60
super(BugsTab, self).__init__(homogeneous=False, spacing=6)
62
62
table = Gtk.Table(rows=2, columns=2)
68
68
image.set_from_file(icon_path("bug.png"))
69
69
table.attach(image, 0, 1, 0, 1, Gtk.AttachOptions.FILL)
71
align = Gtk.Alignment.new(0.0, 0.1)
71
align = Gtk.Alignment.new(0.0, 0.1, 0, 0)
72
72
self.label = Gtk.Label()
73
73
align.add(self.label)
74
74
table.attach(align, 1, 2, 0, 1, Gtk.AttachOptions.FILL)
107
107
def construct_treeview(self):
108
108
self.bugs = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_STRING)
109
self.treeview = Gtk.TreeView(self.bugs)
109
self.treeview = Gtk.TreeView(model=self.bugs)
110
110
self.treeview.set_headers_visible(False)
112
112
uri_column = Gtk.TreeViewColumn('Bug URI', Gtk.CellRendererText(), text=0)
556
556
revid_label.set_alignment(0.0, 0.5)
557
557
button.add(revid_label)
558
558
button.connect("clicked",
559
lambda w, r: self.set_revision(self._repository.get_revision(r)), revid)
559
lambda w, r: self.set_revision(
560
self._repository.get_revision(r)), revid)
560
561
button.set_use_underline(False)
561
562
hbox.pack_start(button, expand=True, fill=True)
562
563
button.show_all()
564
565
def _create_general(self):
565
vbox = Gtk.VBox(False, 6)
566
vbox = Gtk.VBox(homogeneous=False, spacing=6)
566
567
vbox.set_border_width(6)
567
vbox.pack_start(self._create_headers(, True, True, 0), expand=False, fill=True)
568
vbox.pack_start(self._create_message_view(, True, True, 0))
569
self.append_page(vbox, tab_label=Gtk.Label(label="General"))
568
vbox.pack_start(self._create_headers(), False, True, 0)
569
vbox.pack_start(self._create_message_view(), True, True, 0)
570
self.append_page(vbox, Gtk.Label(label="General"))
572
573
def _create_relations(self):
573
vbox = Gtk.VBox(False, 6)
574
vbox = Gtk.VBox(homogeneous=False, spacing=6)
574
575
vbox.set_border_width(6)
575
vbox.pack_start(self._create_parents(, True, True, 0), expand=False, fill=True)
576
vbox.pack_start(self._create_children(, True, True, 0), expand=False, fill=True)
577
self.append_page(vbox, tab_label=Gtk.Label(label="Relations"))
576
vbox.pack_start(self._create_parents(), False, True, 0)
577
vbox.pack_start(self._create_children(), False, True, 0)
578
self.append_page(vbox, Gtk.Label(label="Relations"))
580
581
def _create_signature(self):
581
582
self.signature_table = SignatureTab(self._repository)
582
self.append_page(self.signature_table, tab_label=Gtk.Label(label='Signature'))
584
self.signature_table, tab_label=Gtk.Label(label='Signature'))
583
585
self.connect_after('notify::revision', self._update_signature)
585
587
def _create_headers(self):
714
716
label = Gtk.Label()
715
717
label.set_markup(text)
716
align = Gtk.Alignment.new(0.0, 0.5)
718
align = Gtk.Alignment.new(0.0, 0.5, 0, 0)
718
720
table.attach(align, 0, 1, 0, 1, Gtk.AttachOptions.FILL, Gtk.AttachOptions.FILL)
741
743
def _create_bugs(self):
742
744
self.bugs_page = BugsTab()
743
745
self.connect_after('notify::revision', self._update_bugs)
744
self.append_page(self.bugs_page, tab_label=Gtk.Label(label='Bugs'))
746
self.append_page(self.bugs_page, Gtk.Label(label='Bugs'))
746
748
def _create_file_info_view(self):
747
self.file_info_box = Gtk.VBox(False, 6)
749
self.file_info_box = Gtk.VBox(homogeneous=False, spacing=6)
748
750
self.file_info_box.set_border_width(6)
749
751
self.file_info_buffer = Gtk.TextBuffer()
750
752
window = Gtk.ScrolledWindow()
751
753
window.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
752
754
window.set_shadow_type(Gtk.ShadowType.IN)
753
tv = Gtk.TextView(self.file_info_buffer)
755
tv = Gtk.TextView(buffer=self.file_info_buffer)
754
756
tv.set_editable(False)
755
757
tv.set_wrap_mode(Gtk.WrapMode.WORD)
756
758
tv.modify_font(Pango.FontDescription("Monospace"))