From 14ab470dcc6adc69975cd2e9006c81285d967bc1 Mon Sep 17 00:00:00 2001
From: barongello <wagner@barongello.com.br>
Date: Sun, 25 Aug 2024 12:25:19 -0300
Subject: [PATCH] Adding a swap faces button to easily swap source/target
 images

---
 modules/ui.py | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/modules/ui.py b/modules/ui.py
index 47ecf9b..494d85a 100644
--- a/modules/ui.py
+++ b/modules/ui.py
@@ -116,6 +116,9 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
     source_button = ctk.CTkButton(root, text='Select a face', cursor='hand2', command=select_source_path)
     source_button.place(relx=0.1, rely=0.35, relwidth=0.3, relheight=0.1)
 
+    swap_faces_button = ctk.CTkButton(root, text='↔', cursor='hand2', command=lambda: swap_faces_paths())
+    swap_faces_button.place(relx=0.45, rely=0.4, relwidth=0.1, relheight=0.1)
+
     target_button = ctk.CTkButton(root, text='Select a target', cursor='hand2', command=select_target_path)
     target_button.place(relx=0.6, rely=0.35, relwidth=0.3, relheight=0.1)
 
@@ -221,6 +224,30 @@ def select_source_path() -> None:
         source_label.configure(image=None)
 
 
+def swap_faces_paths() -> None:
+    global RECENT_DIRECTORY_SOURCE, RECENT_DIRECTORY_TARGET
+
+    source_path = modules.globals.source_path
+    target_path = modules.globals.target_path
+
+    if not is_image(source_path) or not is_image(target_path):
+        return
+
+    modules.globals.source_path = target_path
+    modules.globals.target_path = source_path
+
+    RECENT_DIRECTORY_SOURCE = os.path.dirname(modules.globals.source_path)
+    RECENT_DIRECTORY_TARGET = os.path.dirname(modules.globals.target_path)
+
+    PREVIEW.withdraw()
+
+    source_image = render_image_preview(modules.globals.source_path, (200, 200))
+    source_label.configure(image=source_image)
+
+    target_image = render_image_preview(modules.globals.target_path, (200, 200))
+    target_label.configure(image=target_image)
+
+
 def select_target_path() -> None:
     global RECENT_DIRECTORY_TARGET