Attaching the patch to enable/disable the plugin from nautilus itself.

It has a few known caveats, so I'd love some ideas on how to improve it:

 * Once you enable/disable, it won't be reflected until you restart
nautilus. I can't figure out how to make nautilus reload the plugin
 * You can only enable/disable it by clicking in white space within
nautilus, which is impossible from the list view


Anyway, hope we can work this out soon enough so we can release  :)


cheers,


Martin
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [EMAIL PROTECTED]
# target_branch: file:///home/beuno/bzr_devel/gtk.dev/
# testament_sha1: 8ba20391b84047c2f3a031a28a14ca3437b43bfc
# timestamp: 2008-03-28 00:40:32 -0300
# base_revision_id: [EMAIL PROTECTED]
# 
# Begin patch
=== modified file 'nautilus-bzr.py'
--- nautilus-bzr.py	2008-03-04 21:59:30 +0000
+++ nautilus-bzr.py	2008-03-28 03:40:27 +0000
@@ -14,6 +14,9 @@
 from bzrlib.errors import NotBranchError, NoWorkingTree, UnsupportedProtocol
 from bzrlib.tree import file_status
 from bzrlib.workingtree import WorkingTree
+from bzrlib.config import GlobalConfig
+config = GlobalConfig()
+disabled_flag = config.get_user_option('nautilus_integration')
 
 from bzrlib.plugin import load_plugins
 load_plugins()
@@ -219,8 +222,22 @@
         gtk.main()
 
     def get_background_items(self, window, vfs_file):
+        if disabled_flag == 'False':
+            item = nautilus.MenuItem('BzrNautilus::enable',
+                                     'Enable Bazaar Plugin',
+                                     'Enable Bazaar plugin for nautilus')
+            item.connect('activate', self.enable_integration, vfs_file)
+            return item,
+
         items = []
         file = vfs_file.get_uri()
+ 
+        item = nautilus.MenuItem('BzrNautilus::disable',
+                                  'Disable Bazaar Plugin',
+                                  'Disable Bazaar plugin for nautilus')
+        item.connect('activate', self.disable_integration, vfs_file)
+        items.append(item)
+
         try:
             tree, path = WorkingTree.open_containing(file)
         except UnsupportedProtocol:
@@ -269,8 +286,10 @@
         return items
 
     def get_file_items(self, window, files):
+        if disabled_flag == 'False':
+            return
+
         items = []
-
         wtfiles = {}
         for vfs_file in files:
             # We can only cope with local files
@@ -356,6 +375,9 @@
                                "Version control status"),
 
     def update_file_info(self, file):
+        if disabled_flag == 'False':
+            return
+
         if file.get_uri_scheme() != 'file':
             return
         
@@ -393,8 +415,13 @@
         else:
             # FIXME: Check for ignored files
             status = 'unversioned'
-            emblem = 'bzr-unversioned'
         
         if emblem is not None:
             file.add_emblem(emblem)
         file.add_string_attribute('bzr_status', status)
+
+    def enable_integration(self, menu, vfs_file=None):
+        config.set_user_option('nautilus_integration','True')
+
+    def disable_integration(self, menu, vfs_file=None):
+        config.set_user_option('nautilus_integration','False')

# Begin bundle
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
Q6SWuX4o4xkZGyf9UvRt//F3JFOFCQLRLwlg
-- 
bzr-gtk mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.canonical.com/mailman/listinfo/bzr-gtk

Reply via email to