[Pkg-bazaar-commits] ./bzr-gtk/unstable r88: Show column with file status.

Jelmer Vernooij jelmer at samba.org
Fri Apr 10 07:49:29 UTC 2009


------------------------------------------------------------
revno: 88
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: bzr-gtk
timestamp: Tue 2006-10-03 19:09:52 +0200
message:
  Show column with file status.
  Add emblems indicating bzr status to files.
modified:
  nautilus-bzr.py
-------------- next part --------------
=== modified file 'nautilus-bzr.py'
--- a/nautilus-bzr.py	2006-10-03 17:08:31 +0000
+++ b/nautilus-bzr.py	2006-10-03 17:09:52 +0000
@@ -3,13 +3,14 @@
 from bzrlib.bzrdir import BzrDir
 from bzrlib.errors import NotBranchError
 from bzrlib.workingtree import WorkingTree
+from bzrlib.tree import file_status
 
 from bzrlib.plugin import load_plugins
 load_plugins()
 
 from bzrlib.plugins.gtk import cmd_visualise, cmd_gannotate
 
-class BzrExtension(nautilus.MenuProvider):
+class BzrExtension(nautilus.MenuProvider, nautilus.ColumnProvider, nautilus.InfoProvider):
     def __init__(self):
         pass
 
@@ -272,3 +273,50 @@
                 items.append(item)
 
         return items
+
+    def get_columns(self):
+        return nautilus.Column("BzrNautilus::bzr_status",
+                               "bzr_status",
+                               "Bzr Status",
+                               "Version control status"),
+
+    def update_file_info(self, file):
+        if file.get_uri_scheme() != 'file':
+            return
+        
+        try:
+            tree, path = WorkingTree.open_containing(file.get_uri())
+        except NotBranchError:
+            return
+
+        emblem = None
+        status = None
+
+        if tree.has_filename(path):
+            emblem = 'cvs-controlled'
+            status = 'unchanged'
+            id = tree.path2id(path)
+
+            delta = tree.changes_from(tree.branch.basis_tree())
+            if delta.touches_file_id(id):
+                emblem = 'cvs-modified'
+                status = 'modified'
+            for f, _, _ in delta.added:
+                if f == path:
+                    emblem = 'cvs-added'
+                    status = 'added'
+
+            for of, f, _, _, _, _ in delta.renamed:
+                if f == path:
+                    status = 'renamed from %s' % f
+
+        elif tree.branch.basis_tree().has_filename(path):
+            emblem = 'cvs-removed'
+            status = 'removed'
+        else:
+            # FIXME: Check for ignored files
+            status = 'unversioned'
+        
+        if emblem is not None:
+            file.add_emblem(emblem)
+        file.add_string_attribute('bzr_status', status)



More information about the Pkg-bazaar-commits mailing list