summaryrefslogtreecommitdiff
path: root/examples/meld.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/meld.py')
-rw-r--r--examples/meld.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/examples/meld.py b/examples/meld.py
new file mode 100644
index 0000000..15fff1f
--- /dev/null
+++ b/examples/meld.py
@@ -0,0 +1,44 @@
+# Examples: https://github.com/mate-desktop/python-caja/tree/master/examples
+
+import os
+import subprocess
+
+from gi.repository import Caja, GObject
+
+
+class MeldMenuProvider(GObject.GObject, Caja.MenuProvider):
+ MELD_EXECUTABLE = 'meld'
+ MELD_ICON = '/usr/share/icons/hicolor/scalable/apps/org.gnome.Meld.svg'
+
+ def __init__(self):
+ pass
+
+ def menu_activate_cb(self, menu, files=None):
+ if files and len(files):
+ # Set working directory
+ os.chdir(os.path.dirname(files[0].get_location().get_path()))
+
+ # Start Meld
+ cmd_args = [self.MELD_EXECUTABLE]
+ if files and len(files):
+ for i in range(0, min(3, len(files))):
+ cmd_args.append(files[i].get_location().get_path())
+ subprocess.Popen(cmd_args)
+
+ def get_file_items(self, window, files):
+ top_menuitem = Caja.MenuItem(name='MeldMenuProvider::Meld',
+ label='Meld compare',
+ tip='Compare files and folders using Meld',
+ icon=self.MELD_ICON)
+ top_menuitem.connect('activate', self.menu_activate_cb, files)
+
+ return top_menuitem,
+
+ def get_background_items(self, window, file):
+ bg_menuitem_meld = Caja.MenuItem(name='MeldMenuProvider::MeldBg',
+ label='Meld',
+ tip='Compare files and folders using Meld',
+ icon=self.MELD_ICON)
+ bg_menuitem_meld.connect('activate', self.menu_activate_cb)
+
+ return bg_menuitem_meld,