[meld] Support passing along a bunch of metadata to tab creation



commit 05418890b80582e593136e6978bfeff65c42cb40
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Tue Apr 22 07:40:28 2014 +1000

    Support passing along a bunch of metadata to tab creation
    
    The goal of this is to allow some degree of parent-child communication,
    mostly for file comparisons launched from VC tabs.

 meld/filediff.py   |    4 ++++
 meld/meldwindow.py |   12 ++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/meld/filediff.py b/meld/filediff.py
index 4fc5f99..55a3ffe 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -196,6 +196,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
             buf.data.connect('file-changed', self.notify_file_changed)
         self._keymask = 0
         self.load_font()
+        self.meta = {}
         self.deleted_lines_pending = -1
         self.textview_overwrite = 0
         self.focus_pane = None
@@ -1229,6 +1230,9 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
         for i in self._diff_files():
             yield i
 
+    def set_meta(self, meta):
+        self.meta = meta
+
     def notify_file_changed(self, data):
         try:
             pane = [b.data for b in self.textbuffer].index(data)
diff --git a/meld/meldwindow.py b/meld/meldwindow.py
index 474bf67..6046b4d 100644
--- a/meld/meldwindow.py
+++ b/meld/meldwindow.py
@@ -598,13 +598,15 @@ class MeldWindow(gnomeglade.Component):
             doc.on_button_diff_clicked(None)
         return doc
 
-    def append_filediff(self, files,  merge_output=None):
+    def append_filediff(self, files,  merge_output=None, meta=None):
         assert len(files) in (1, 2, 3)
         doc = filediff.FileDiff(len(files))
         self._append_page(doc, "text-x-generic")
         doc.set_files(files)
         if merge_output is not None:
             doc.set_merge_output_file(merge_output)
+        if meta is not None:
+            doc.set_meta(meta)
         return doc
 
     def append_filemerge(self, files, merge_output=None):
@@ -617,7 +619,7 @@ class MeldWindow(gnomeglade.Component):
         return doc
 
     def append_diff(self, paths, auto_compare=False, auto_merge=False,
-                    merge_output=None):
+                    merge_output=None, meta=None):
         dirslist = [p for p in paths if os.path.isdir(p)]
         fileslist = [p for p in paths if os.path.isfile(p)]
         if dirslist and fileslist:
@@ -628,7 +630,8 @@ class MeldWindow(gnomeglade.Component):
         elif auto_merge:
             return self.append_filemerge(paths, merge_output=merge_output)
         else:
-            return self.append_filediff(paths, merge_output=merge_output)
+            return self.append_filediff(
+                paths, merge_output=merge_output, meta=meta)
 
     def append_vcview(self, location, auto_compare=False):
         doc = vcview.VcView()
@@ -678,7 +681,8 @@ class MeldWindow(gnomeglade.Component):
                 tab = self.append_vcview(a, auto_compare)
 
         elif len(paths) in (2, 3):
-            tab = self.append_diff(paths, auto_compare, auto_merge)
+            tab = self.append_diff(
+                paths, auto_compare=auto_compare, auto_merge=auto_merge)
         if tab:
             recent_comparisons.add(tab)
             if focus:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]