Rev 426: Add bugs tab to display bug status change metadata. in file:///data/jelmer/bzr-gtk/bugstab/

Jelmer Vernooij jelmer at samba.org
Tue Jan 22 14:34:11 GMT 2008


At file:///data/jelmer/bzr-gtk/bugstab/

------------------------------------------------------------
revno: 426
revision-id:jelmer at samba.org-20080122143410-w3nr2uuml1filn78
parent: daniel.schierbeck at gmail.com-20080120204259-vvlke962mogun46l
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: bugstab
timestamp: Tue 2008-01-22 15:34:10 +0100
message:
  Add bugs tab to display bug status change metadata.
modified:
  revisionview.py                logview.py-20051024072750-4d5c28cb73611027
=== modified file 'revisionview.py'
--- a/revisionview.py	2007-12-06 23:49:08 +0000
+++ b/revisionview.py	2008-01-22 14:34:10 +0000
@@ -20,6 +20,7 @@
 import gtk
 import pango
 import gobject
+import subprocess
 
 from bzrlib.osutils import format_date
 from bzrlib.util.bencode import bdecode
@@ -68,6 +69,7 @@
         self._create_general()
         self._create_relations()
         self._create_file_info_view()
+        self._create_bugs()
 
         self.set_current_page(0)
         
@@ -126,6 +128,9 @@
     def get_revision(self):
         return self.get_property('revision')
 
+    def _open_link(self, widget, uri):
+        subprocess.Popen(['sensible-browser', uri], close_fds=True)
+
     def _set_revision(self, revision):
         if revision is None: return
 
@@ -179,6 +184,25 @@
         else:
             self.file_info_box.hide()
 
+        bugs_text = revision.properties.get('bugs', None)
+        if bugs_text:
+            for c in self.bugs_table.get_children():
+                self.bugs_table.remove(c)
+            idx = 0
+            for bugline in bugs_text.splitlines():
+                (url, status) = bugline.split(" ")
+                button = gtk.LinkButton(url, url)
+                gtk.link_button_set_uri_hook(self._open_link)
+                self.bugs_table.attach(button, 0, 1, idx, idx + 1,
+                                      gtk.EXPAND | gtk.FILL, gtk.FILL)
+                status_label = gtk.Label(status)
+                self.bugs_table.attach(status_label, 1, 2, idx, idx + 1,
+                                      gtk.EXPAND | gtk.FILL, gtk.FILL)
+                idx += 1
+            self.bugs_table.show_all()
+        else:
+            self.bugs_table.hide()
+
     def set_children(self, children):
         self._add_parents_or_children(children,
                                       self.children_widgets,
@@ -431,6 +455,13 @@
         window.show()
         return window
 
+    def _create_bugs(self):
+        self.bugs_table = gtk.Table(rows=5, columns=2)
+        self.bugs_table.set_row_spacings(6)
+        self.bugs_table.set_col_spacings(6)
+        self.bugs_table.hide() # Only shown when there are bugs
+        self.append_page(self.bugs_table, tab_label=gtk.Label('Bugs'))
+
     def _create_file_info_view(self):
         self.file_info_box = gtk.VBox(False, 6)
         self.file_info_box.set_border_width(6)




More information about the bazaar-commits mailing list