This patch improves the bugs page, adding a nice icon and stuff.
Cheers, Daniel
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [EMAIL PROTECTED]
# tf6xys6ws1d43thq
# target_branch: file:///home/daniel/Projects/bzr-gtk/trunk/
# testament_sha1: d9a500d116fbfbc5e86291d340d172be56ed4a85
# timestamp: 2008-04-02 17:35:58 +0200
# base_revision_id: [EMAIL PROTECTED]
#
# Begin patch
=== added file 'icons/bug.png'
Binary files icons/bug.png 1970-01-01 00:00:00 +0000 and icons/bug.png 2008-04-01 22:05:41 +0000 differ
=== modified file 'revisionview.py'
--- revisionview.py 2008-03-31 21:59:11 +0000
+++ revisionview.py 2008-04-02 12:51:58 +0000
@@ -31,28 +31,91 @@
gtk.link_button_set_uri_hook(_open_link)
-class BugsTab(gtk.Table):
+class BugsTab(gtk.VBox):
+
def __init__(self):
- super(BugsTab, self).__init__(rows=5, columns=2)
- self.set_row_spacings(6)
- self.set_col_spacings(6)
- self.clear()
+ super(BugsTab, self).__init__(False, 6)
+
+ table = gtk.Table(rows=2, columns=2)
+
+ table.set_row_spacings(6)
+ table.set_col_spacing(0, 16)
+
+ image = gtk.Image()
+ image.set_from_file(icon_path("bug.png"))
+ table.attach(image, 0, 1, 0, 1, gtk.FILL)
+
+ align = gtk.Alignment(0.0, 0.1)
+ self.label = gtk.Label()
+ align.add(self.label)
+ table.attach(align, 1, 2, 0, 1, gtk.FILL)
+
+ treeview = self.construct_treeview()
+ table.attach(treeview, 1, 2, 1, 2, gtk.FILL | gtk.EXPAND)
+
+ self.set_border_width(6)
+ self.pack_start(table, expand=False)
+
+ self.clear()
+ self.show_all()
+
+ def set_revision(self, revision):
+ if revision is None:
+ return
+
+ self.clear()
+ bugs_text = revision.properties.get('bugs', '')
+ for bugline in bugs_text.splitlines():
+ (url, status) = bugline.split(" ")
+ if status == "fixed":
+ self.add_bug(url, status)
+
+ if self.num_bugs == 0:
+ return
+ elif self.num_bugs == 1:
+ label = "bug"
+ else:
+ label = "bugs"
+
+ self.label.set_markup("<b>Bugs fixed</b>\n" +
+ "This revision claims to fix " +
+ "%d %s." % (self.num_bugs, label))
+
+ def construct_treeview(self):
+ self.bugs = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ self.treeview = gtk.TreeView(self.bugs)
+ self.treeview.set_headers_visible(False)
+
+ uri_column = gtk.TreeViewColumn('Bug URI', gtk.CellRendererText(), text=0)
+ self.treeview.append_column(uri_column)
+
+ self.treeview.connect('row-activated', self.on_row_activated)
+
+ win = gtk.ScrolledWindow()
+ win.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ win.set_shadow_type(gtk.SHADOW_IN)
+ win.add(self.treeview)
+
+ return win
def clear(self):
- for c in self.get_children():
- self.remove(c)
- self.count = 0
- self.hide_all() # Only shown when there are bugs
+ self.num_bugs = 0
+ self.bugs.clear()
+ self.set_sensitive(False)
+ self.label.set_markup("<b>No bugs fixed</b>\n" +
+ "This revision does not claim to fix any bugs.")
def add_bug(self, url, status):
- button = gtk.LinkButton(url, url)
- self.attach(button, 0, 1, self.count, self.count + 1,
- gtk.EXPAND | gtk.FILL, gtk.FILL)
- status_label = gtk.Label(status)
- self.attach(status_label, 1, 2, self.count, self.count + 1,
- gtk.EXPAND | gtk.FILL, gtk.FILL)
- self.count += 1
- self.show_all()
+ self.num_bugs += 1
+ self.bugs.append([url, status])
+ self.set_sensitive(True)
+
+ def get_num_bugs(self):
+ return self.num_bugs
+
+ def on_row_activated(self, treeview, path, column):
+ uri = self.bugs.get_value(self.bugs.get_iter(path), 0)
+ _open_link(self, uri)
class SignatureTab(gtk.VBox):
@@ -264,13 +327,6 @@
else:
self.file_info_box.hide()
- self.bugs_table.clear()
- bugs_text = revision.properties.get('bugs', None)
- if bugs_text:
- for bugline in bugs_text.splitlines():
- (url, status) = bugline.split(" ")
- self.bugs_table.add_bug(url, status)
-
def update_tags(self):
if self._branch is not None and self._branch.supports_tags():
self._tagdict = self._branch.tags.get_reverse_tag_dict()
@@ -288,6 +344,11 @@
else:
self.signature_table.show_no_signature()
+ def _update_bugs(self, widget, param):
+ self.bugs_page.set_revision(self._revision)
+ label = self.get_tab_label(self.bugs_page)
+ label.set_sensitive(self.bugs_page.get_num_bugs() > 0)
+
def set_children(self, children):
self._add_parents_or_children(children,
self.children_widgets,
@@ -544,8 +605,9 @@
return window
def _create_bugs(self):
- self.bugs_table = BugsTab()
- self.append_page(self.bugs_table, tab_label=gtk.Label('Bugs'))
+ self.bugs_page = BugsTab()
+ self.connect_after('notify::revision', self._update_bugs)
+ self.append_page(self.bugs_page, tab_label=gtk.Label('Bugs'))
def _create_file_info_view(self):
self.file_info_box = gtk.VBox(False, 6)
=== modified file 'setup.py'
--- setup.py 2008-03-30 15:58:52 +0000
+++ setup.py 2008-04-01 22:27:50 +0000
@@ -133,6 +133,7 @@
'icons/sign-ok.png',
'icons/sign.png',
'icons/sign-unknown.png',
+ 'icons/bug.png',
'icons/bzr-icon-64.png']),
('share/applications', ['olive-gtk.desktop',
'bazaar-properties.desktop',
# Begin bundle
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
signature.asc
Description: This is a digitally signed message part
-- bzr-gtk mailing list [email protected] Modify settings or unsubscribe at: https://lists.canonical.com/mailman/listinfo/bzr-gtk
