[meld/pathlabel: 6/10] iohelpers: Add new common-parent helper
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld/pathlabel: 6/10] iohelpers: Add new common-parent helper
- Date: Sun, 10 Jan 2021 02:57:36 +0000 (UTC)
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]