[meld/pathlabel: 6/10] iohelpers: Add new common-parent helper




commit 370f5fbeec158bb346606238bee132721f6a7409
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Sun Jan 10 09:55:40 2021 +1000

    iohelpers: Add new common-parent helper
    
    This is needed for the new path label display.

 meld/iohelpers.py | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)
---
diff --git a/meld/iohelpers.py b/meld/iohelpers.py
index 83497bef..773241d8 100644
--- a/meld/iohelpers.py
+++ b/meld/iohelpers.py
@@ -1,5 +1,5 @@
 
-from typing import Optional
+from typing import Optional, Sequence
 
 from gi.repository import Gio, GLib, Gtk
 
@@ -118,3 +118,30 @@ def prompt_save_filename(
         return None
 
     return gfile
+
+
+def find_shared_parent_path(
+    paths: Sequence[Gio.File],
+) -> Optional[Gio.File]:
+
+    if not paths or not paths[0]:
+        return None
+
+    current_parent = paths[0].get_parent()
+    if len(paths) == 1:
+        return current_parent
+
+    while current_parent:
+        is_valid_parent = all(
+            current_parent.get_relative_path(path)
+            for path in paths
+        )
+        if is_valid_parent:
+            break
+
+        current_parent = current_parent.get_parent()
+
+    # Either we've broken out of the loop early, in which case we have
+    # a valid common parent path, or we've fallen through, in which
+    # case the path return is None.
+    return current_parent


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